Arrays.sort() Java

Arrays.sort() Java
Išbandykite GfG praktikoje

Masyvo elementams rūšiuoti naudojamas Java metodas Arrays.sort() .

  • Tai suteikia lanksčių parinkčių, leidžiančių rūšiuoti ištisus masyvus, pogrupius ar net pasirinktinius objektus naudojant lyginamuosius elementus.
  • Gali rūšiuoti tiek primityvius masyvus (int char ir kt.), tiek objektų masyvus (Integer String ir kt.).

Pavyzdys: Sveikųjų skaičių ir simbolių masyvų rūšiavimas didėjančia tvarka

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

Išvestis
[-1 2 3 4] [a b b c]  

Paaiškinimas:



  • Masyvai.sort() pertvarko elementus didėjančia tvarka.
  • Dublikatai nepašalinami.
  • Primityvūs masyvai negali naudoti pasirinktinių lygintuvų.

Masyvų sintaksė.sort() Metodas

1. Norėdami surūšiuoti visą masyvą

Masyvai.rūšiuoti(); 

2. Norėdami surūšiuoti pogrupį

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

Parametrai:

  • arr : masyvas, kurį reikia rūšiuoti.
  • from_Index: Pirmojo rūšiuojamo elemento (imtinai) indeksas.
  • į_indeksą : paskutinio rūšiuojamo elemento (išskyrus) indeksas.
  • Grąžinimo tipas: negalioja (šis metodas nieko negrąžina).

Pastaba:

  • Arrays.sort() nepašalina dublikatų; ji tik pertvarko elementus.
  • Primityvūs tipai negali naudoti pasirinktinių lygintuvų; rūšiavimas vyksta natūralia (didėjančia) tvarka.

Pavyzdys: „Subarray“ rūšiavimas

Galite rūšiuoti masyvo dalį nurodydami pradžios (imtinai) ir pabaigos (išskyrus) 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  ));      }   }   

Išvestis
[2 -1 3 4]  

Paaiškinimas: Rūšiuojami tik 1 2 ir 3 indeksų elementai; 0 indekso elementas lieka nepakitęs.

Rūšiavimas mažėjančia tvarka

Norėdami rūšiuoti masyvą mažėjančia tvarka, galime naudoti Arrays.sort() metodą su Collections.reverseOrder() kaip lyginamuoju elementu.

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

Išvestis
[4 3 2 -1] [chauhan Vishnu Hii]  

Paaiškinimas:

  • Veikia tik objektų masyvuose; primityvūs tipai (int) negali naudoti komparatorių.
  • For Strings rūšiuoja leksikografiškai iš Z -> A.

Pasirinktinis rūšiavimas naudojant palyginimo priemonę

Mes galime rūšiuoti objektų masyvą, apibrėždami pasirinktinę rūšiavimo logiką naudodami  Palyginimo sąsaja .

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

Išvestis
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Paaiškinimas:

  • Komparatorius leidžia pasirinktinę rūšiavimo logiką nekeičiant klasės.
  • Čia mokiniai rūšiuojami pagal ritinio numerį.

Natūralus rūšiavimas su palyginama sąsaja

Toliau pateiktame pavyzdyje mes rūšiuojame studentų objektų masyvą pagal jų pavadinimą abėcėlės tvarka.

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

Išvestis
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Paaiškinimas:

  • Šiame pavyzdyje mes naudojame Palyginama sąsaja nustatyti natūralią Mokinio objektų tvarką.
  • Įdiegę metodą nurodome, kaip turi būti lyginami du Mokinio objektai, įjungiant rūšiavimą pagal mokinio vardą.

Tai leidžia mums naudoti Arrays.sort() metodą tiesiogiai studentų objektų masyve, kad surūšiuotume juos tvarka ir čia mums nereikia atskiro palyginimo.

Sukurti viktoriną

Top Straipsniai

Kategorija

Įdomios Straipsniai