Arrays.sort() Java

Arrays.sort() Java
Izmēģiniet to GfG Practice

Masīva elementu kārtošanai tiek izmantota Java metode Arrays.sort().

  • Tas nodrošina elastīgas iespējas kārtot veselu masīvu apakšmasīvus vai pat pielāgotus objektus, izmantojot salīdzinājumus.
  • Var kārtot gan primitīvus masīvus (int char utt.), gan objektu masīvus (Integer String utt.).

Piemērs: Veselo skaitļu un rakstzīmju masīvu kārtošana augošā secībā

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

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

Paskaidrojums:

  • Arrays.sort() pārkārto elementus augošā secībā.
  • Dublikāti netiek noņemti.
  • Primitīvajos masīvos nevar izmantot pielāgotus salīdzinājumus.

Masīvu sintakse.sort() Metode

1. Lai sakārtotu visu masīvu

Arrays.sort(); 

2. Lai sakārtotu apakšgrupu

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

Parametri:

  • arr : kārtojamais masīvs.
  • from_Index: Pirmā kārtojamā elementa indekss (ieskaitot).
  • uz_indeksu : pēdējā kārtojamā elementa indekss (izņemot).
  • Atgriešanas veids: spēkā neesošs (Šī metode neko neatgriež).

Piezīme:

  • Arrays.sort() nenoņem dublikātus; tas tikai pārkārto elementus.
  • Primitīvie tipi nevar izmantot pielāgotus salīdzinātājus; šķirošana notiek dabiskā (augošā) secībā.

Piemērs: kārtošana apakšgrupā

Varat kārtot masīva daļu, norādot sākuma (ieskaitot) un beigu (izņemot) indeksus.

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

Izvade
[2 -1 3 4]  

Paskaidrojums: Tiek sakārtoti tikai elementi pie indeksa 1 2 un 3; elements ar indeksu 0 paliek nemainīgs.

Šķirošana dilstošā secībā

Lai kārtotu masīvu dilstošā secībā, mēs varam izmantot metodi Arrays.sort() ar Collections.reverseOrder() kā salīdzinājumu.

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

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

Paskaidrojums:

  • Darbojas tikai uz objektu masīviem; primitīvie veidi (int) nevar izmantot salīdzinājumus.
  • For Strings kārto leksikogrāfiski no Z -> A.

Pielāgota šķirošana ar salīdzinājumu

Mēs varam kārtot objektu masīvu, definējot pielāgotu šķirošanas loģiku, izmantojot  Salīdzinājuma interfeiss .

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

Izvade
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Paskaidrojums:

  • Salīdzinātājs ļauj pielāgotu šķirošanas loģiku, nemainot klasi.
  • Šeit skolēni tiek sakārtoti pēc ruļļa numura.

Dabiskā šķirošana ar salīdzināmu interfeisu

Tālāk esošajā piemērā mēs sakārtojam Studentu objektu masīvu, pamatojoties uz to nosaukumu alfabētiskā secībā.

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

Izvade
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Paskaidrojums:

  • Šajā piemērā mēs izmantojam Salīdzināms interfeiss definēt Studentu objektu dabisko secību.
  • Ieviešot metodi, mēs norādām, kā jāsalīdzina divi Studentu objekti, iespējojot kārtošanu pēc skolēna vārda.

Tas ļauj mums izmantot Arrays.sort() metodi tieši studentu objektu masīvā, lai sakārtotu tos secībā, un šeit mums nav nepieciešams atsevišķs salīdzinājums.

Izveidojiet viktorīnu