Arrays.sort() в Java

Arrays.sort() в Java
Опитайте в GfG Practice

Методът Arrays.sort() в Java се използва за сортиране на елементите на масив.

  • Той предоставя гъвкави опции за сортиране на цели масиви, подмасиви или дори персонализирани обекти с помощта на компаратори.
  • Може да сортира както примитивни масиви (int char и т.н.), така и обектни масиви (Integer String и т.н.).

Пример: Сортиране на целочислени и символни масиви във възходящ ред

Java
   import     java.util.Arrays  ;   class   Geeks  {          public     static     void     main  (  String  []     args  )     {      // Integer array      int  []     arr1     =     {  2       -  1       3       4  };      // Character array      char  []     arr2     =     {  'b'       'a'       'c'       'b'  };      // Sorting arrays in ascending order      Arrays  .  sort  (  arr1  );         Arrays  .  sort  (  arr2  );      // Print sorted arrays      System  .  out  .  println  (  Arrays  .  toString  (  arr1  ));         System  .  out  .  println  (  Arrays  .  toString  (  arr2  ));      }   }   

Изход
[-1 2 3 4] [a b b c]  

Обяснение:

  • Arrays.sort() пренарежда елементите във възходящ ред.
  • Дубликатите не се премахват.
  • Примитивните масиви не могат да използват персонализирани компаратори.

Синтаксис на метода Arrays.sort().

1. За сортиране на целия масив

Arrays.sort(); 

2. За сортиране на подмасив

public static void sort(int[] arr int from_Index int to_Index) ;

Параметри:

  • обр : Масивът за сортиране.
  • от_Индекс: Индексът на първия елемент (включително), който трябва да бъде сортиран.
  • to_Index : Индексът на последния елемент (изключителен), който трябва да бъде сортиран.
  • Тип връщане: void (Този метод не връща нищо).

Забележка:

  • Arrays.sort() не премахва дубликати; той само пренарежда елементи.
  • Примитивните типове не могат да използват потребителски компаратори; сортирането е в естествен (възходящ) ред.

Пример: Сортиране на подмасив

Можете да сортирате част от масив, като посочите начален (включителен) и краен (изключващ) индекси.

Java
   import     java.util.Arrays  ;   public     class   Geeks  {          public     static     void     main  (  String  []     args  ){      int  []     arr     =     {  2       -  1       4       3  };      // Sort elements from index 1 to 3      Arrays  .  sort  (  arr       1       4  );      // Print array after sorting subarray      System  .  out  .  println  (  Arrays  .  toString  (  arr  ));      }   }   

Изход
[2 -1 3 4]  

Обяснение: Сортират се само елементите с индекси 1 2 и 3; елементът с индекс 0 остава непроменен.

Сортиране в низходящ ред

За да сортираме масив в низходящ ред, можем да използваме метода Arrays.sort() с Collections.reverseOrder() като компаратор.

Java
   import     java.util.Arrays  ;   import     java.util.Collections  ;   public     class   Geeks  {      public     static     void     main  (  String  []     args  )     {      // Integer array      Integer  []     arr     =     {  2       -  1       3       4  };      Arrays  .  sort  (  arr       Collections  .  reverseOrder  ());         System  .  out  .  println  (  Arrays  .  toString  (  arr  ));         // String array      String  []     str     =     {  'Hii'       'Vishnu'       'chauhan'  };      Arrays  .  sort  (  str       Collections  .  reverseOrder  ());         System  .  out  .  println  (  Arrays  .  toString  (  str  ));      }   }   

Изход
[4 3 2 -1] [chauhan Vishnu Hii]  

Обяснение:

  • Работи само върху обектни масиви; примитивните типове (int) не могат да използват компаратори.
  • For Strings сортира лексикографски от Z -> A.

Персонализирано сортиране с Comparator

Можем да сортираме масив от обекти, като дефинираме персонализирана логика за сортиране с помощта на  Интерфейс за сравнение .

Java
   import     java.util.*  ;   // Custom class   class   Student  {          int     roll  ;      String     name  ;      String     address  ;      Student  (  int     roll       String     name       String     address  ){          this  .  roll     =     roll  ;      this  .  name     =     name  ;      this  .  address     =     address  ;      }      // Print student details      public     String     toString  ()     {      return     roll     +     ' '     +     name     +     ' '     +     address  ;      }   }   // Comparator to sort by roll number   class   SortByRoll     implements     Comparator   <  Student  >  {          public     int     compare  (  Student     s1       Student     s2  ){          return     s1  .  roll     -     s2  .  roll  ;      }   }   class   Geeks     {      public     static     void     main  (  String  []     args  ){      Student  []     students     =     {      new     Student  (  1       'Ram'       'MP'  )      new     Student  (  2       'Shyam'       'UP'  )      new     Student  (  3       'Hari'       'Delhi'  )      };      // Sort using custom comparator      Arrays  .  sort  (  students       new     SortByRoll  ());      // Print sorted students      for     (  Student     s     :     students  )      System  .  out  .  println  (  s  );      }   }   

Изход
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Обяснение:

  • Comparator позволява персонализирана логика за сортиране без промяна на класа.
  • Тук учениците са сортирани по номера на списъка.

Естествено сортиране със сравним интерфейс

В примера по-долу сортираме масив от обекти Student въз основа на името им по азбучен ред.

Java
   import     java.util.Arrays  ;   class   Student     implements     Comparable   <  Student  >  {          int     r  ;      String     n  ;      String     a  ;      // Constructor      public     Student  (  int     r       String     n       String     a  ){          this  .  r     =     r  ;      this  .  n     =     n  ;      this  .  a     =     a  ;      }      // compareTo method to sort by name      public     int     compareTo  (  Student     o  ){          return     this  .  n  .  compareTo  (  o  .  n  );      }      // toString() method to print Student details      public     String     toString  ()     {      return     this  .  r     +     ' '     +     this  .  n     +     ' '     +     this  .  a  ;      }   }   public     class   Geeks  {          public     static     void     main  (  String  []     args  ){          Student  []     s     =     {      new     Student  (  1       'Ram'       'UP'  )      new     Student  (  2       'Shyam'       'MP'  )      new     Student  (  3       'Hari'       'Bihar'  )      };      // Sorting students by name in alphabetical order      Arrays  .  sort  (  s  );      for     (  Student     student     :     s  )      System  .  out  .  println  (  student  );      }   }   

Изход
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Обяснение:

  • В този пример използваме Сравним интерфейс за дефиниране на естествен ред за обектите Student.
  • Чрез внедряването на метода ние указваме как трябва да се сравняват два обекта Student, като разрешаваме сортиране въз основа на името на ученика.

Това ни позволява да използваме метода Arrays.sort() директно върху масив от обекти Student, за да ги сортираме в ред и тук не се нуждаем от отделен компаратор.

Създаване на тест