Arrays.sort() v Javi

Arrays.sort() v Javi
Preizkusite na GfG Practice

Metoda Arrays.sort() v Javi se uporablja za razvrščanje elementov matrike.

  • Ponuja prilagodljive možnosti za razvrščanje celotnih nizov, podnizov ali celo predmetov po meri z uporabo primerjalnikov.
  • Lahko razvrsti tako primitivne nize (int char itd.) kot nize predmetov (Integer String itd.).

primer: Razvrščanje nizov celih števil in znakov v naraščajočem vrstnem redu

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

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

Pojasnilo:

  • Arrays.sort() preureja elemente v naraščajočem vrstnem redu.
  • Dvojniki se ne odstranijo.
  • Primitivni nizi ne morejo uporabljati primerjalnikov po meri.

Sintaksa metode Arrays.sort().

1. Za razvrščanje celotne matrike

Arrays.sort(); 

2. Za razvrščanje podmatrike

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

Parametri:

  • prir : niz, ki ga želite razvrstiti.
  • iz_indeksa: Indeks prvega elementa (vključno), ki ga je treba razvrstiti.
  • na_indeks : Indeks zadnjega (izključnega) elementa, ki bo razvrščen.
  • Vrsta vračila: void (ta metoda ne vrne ničesar).

Opomba:

  • Arrays.sort() ne odstrani dvojnikov; samo preureja elemente.
  • Primitivni tipi ne morejo uporabljati primerjalnikov po meri; razvrščanje je v naravnem (naraščajočem) vrstnem redu.

Primer: Razvrščanje podmatrike

Del matrike lahko razvrstite tako, da določite začetni (vključno) in končni (izključni) indeks.

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

Izhod
[2 -1 3 4]  

Pojasnilo: Razvrščeni so samo elementi z indeksi 1 2 in 3; element z indeksom 0 ostane nespremenjen.

Razvrščanje po padajočem vrstnem redu

Za razvrščanje matrike v padajočem vrstnem redu lahko uporabimo metodo Arrays.sort() s Collections.reverseOrder() kot primerjalnikom.

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

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

Pojasnilo:

  • Deluje samo na objektnih nizih; primitivni tipi (int) ne morejo uporabljati primerjalnikov.
  • For Strings razvršča leksikografsko od Z -> A.

Razvrščanje po meri s primerjalnikom

Matriko predmetov lahko razvrstimo tako, da definiramo logiko razvrščanja po meri s pomočjo  Vmesnik primerjalnika .

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

Izhod
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Pojasnilo:

  • Primerjalnik omogoča logiko razvrščanja po meri brez spreminjanja razreda.
  • Tukaj so učenci razvrščeni po številki zvitka.

Naravno razvrščanje s primerljivim vmesnikom

V spodnjem primeru razvrstimo matriko predmetov Student glede na njihovo ime po abecedi.

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

Izhod
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Pojasnilo:

  • V tem primeru uporabljamo Primerljiv vmesnik za definiranje naravnega reda za predmete Student.
  • Z implementacijo metode določimo, kako naj se dva predmeta študenta primerjata z omogočanjem razvrščanja na podlagi imena študenta.

To nam omogoča uporabo metode Arrays.sort() neposredno na matriki predmetov Student, da jih razvrstimo po vrstnem redu in tukaj ne potrebujemo ločenega primerjalnika.

Ustvari kviz