Arrays.sort() a Java

Arrays.sort() a Java
Prova-ho a GfG Practice

El mètode Arrays.sort() de Java s'utilitza per ordenar els elements d'una matriu.

  • Proporciona opcions flexibles per ordenar matrius senceres subarrays o fins i tot objectes personalitzats mitjançant comparadors.
  • Pot ordenar tant matrius primitives (car int, etc.) com matrius d'objectes (cadena enter, etc.).

Exemple: Ordenant matrius d'enters i caràcters en ordre ascendent

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  ));      }   }   

Sortida
[-1 2 3 4] [a b b c]  

Explicació:

  • Arrays.sort() reordena els elements en ordre ascendent.
  • Els duplicats no s'eliminen.
  • Les matrius primitives no poden utilitzar comparadors personalitzats.

Sintaxi del mètode Arrays.sort().

1. Per ordenar tota la matriu

Arrays.sort(); 

2. Ordenar un subbarrat

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

Paràmetres:

  • arr : La matriu que s'ha d'ordenar.
  • de_índex: L'índex del primer element (inclòs) que s'ha d'ordenar.
  • a_indexar : L'índex de l'últim element (exclusiu) a ordenar.
  • Tipus de retorn: void (Aquest mètode no retorna res).

Nota:

  • Arrays.sort() no elimina els duplicats; només reordena elements.
  • Els tipus primitius no poden utilitzar comparadors personalitzats; l'ordenació és en ordre natural (creixent).

Exemple: Ordenació de Subbarray

Podeu ordenar una part d'una matriu especificant els índexs d'inici (inclosos) i finals (exclusius).

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  ));      }   }   

Sortida
[2 -1 3 4]  

Explicació: Només s'ordenen els elements dels índexs 1 2 i 3; l'element de l'índex 0 es manté sense canvis.

Ordenació per ordre descendent

Per ordenar una matriu en ordre descendent podem utilitzar el mètode Arrays.sort() amb Collections.reverseOrder() com a comparador.

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  ));      }   }   

Sortida
[4 3 2 -1] [chauhan Vishnu Hii]  

Explicació:

  • Només funciona amb matrius d'objectes; Els tipus primitius (int) no poden utilitzar comparadors.
  • Per a les cadenes, ordena lexicogràficament des de Z -> A.

Classificació personalitzada amb comparador

Podem ordenar una matriu d'objectes definint una lògica d'ordenació personalitzada amb l'ajuda de l'  Interfície de comparació .

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  );      }   }   

Sortida
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Explicació:

  • El comparador permet una lògica d'ordenació personalitzada sense modificar la classe.
  • Aquí els alumnes estan ordenats per número de rotlle.

Classificació natural amb interfície comparable

A l'exemple següent, ordenem una matriu d'objectes Student en funció del seu nom alfabèticament.

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  );      }   }   

Sortida
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Explicació:

  • En aquest exemple fem servir el Interfície comparable per definir un ordre natural per als objectes Student.
  • Mitjançant la implementació del mètode, especifiquem com s'han de comparar dos objectes Student habilitant l'ordenació en funció del nom de l'estudiant.

Això ens permet utilitzar el mètode Arrays.sort() directament en una matriu d'objectes Student per ordenar-los en un ordre i aquí no necessitem un comparador separat.

Crea un qüestionari