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.

Спеціальне сортування з компаратором

Ми можемо відсортувати масив об’єктів, визначивши спеціальну логіку сортування за допомогою  Інтерфейс компаратора .

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  

Пояснення:

  • Компаратор дозволяє користувацьку логіку сортування без зміни класу.
  • Тут учні сортуються за номером списку.

Природне сортування з порівнянним інтерфейсом

У наведеному нижче прикладі ми сортуємо масив об’єктів 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, щоб сортувати їх у порядку, і тут нам не потрібен окремий компаратор.

Створіть вікторину

Кращі Статті

Категорія

Цікаві Статті