Arrays.sort() i Java

Arrays.sort() i Java
Prova det på GfG Practice

Metoden Arrays.sort() i Java används för att sortera elementen i en array.

  • Det ger flexibla alternativ för att sortera hela arrays subarrayer eller till och med anpassade objekt med hjälp av komparatorer.
  • Kan sortera både primitiva arrayer (int char etc.) och objekt arrays (Integer String etc.).

Exempel: Sortering av heltals- och teckenmatriser i stigande ordning

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

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

Förklaring:

  • Arrays.sort() ordnar om element i stigande ordning.
  • Dubletter tas inte bort.
  • Primitiva arrayer kan inte använda anpassade komparatorer.

Syntax för Arrays.sort()-metoden

1. För att sortera hela arrayen

Arrays.sort(); 

2. För att sortera en undergrupp

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

Parametrar:

  • arr : Matrisen som ska sorteras.
  • from_Index: Indexet för det första elementet (inklusive) som ska sorteras.
  • to_Index : Indexet för det sista elementet (exklusivt) som ska sorteras.
  • Returtyp: void (denna metod returnerar inget).

Notera:

  • Arrays.sort() tar inte bort dubbletter; det ordnar bara om element.
  • Primitiva typer kan inte använda anpassade komparatorer; sorteringen sker i naturlig (stigande) ordning.

Exempel: Sortering av subarray

Du kan sortera en del av en array genom att ange start- (inklusive) och slut (exklusiva) index.

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

Produktion
[2 -1 3 4]  

Förklaring: Endast elementen vid index 1 2 och 3 sorteras; elementet vid index 0 förblir oförändrat.

Sortering i fallande ordning

För att sortera en array i fallande ordning kan vi använda metoden Arrays.sort() med Collections.reverseOrder() som en komparator.

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

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

Förklaring:

  • Fungerar endast på objektmatriser; primitiva typer (int) kan inte använda komparatorer.
  • For Strings sorterar lexikografiskt från Z -> A.

Anpassad sortering med komparator

Vi kan sortera en rad objekt genom att definiera anpassad sorteringslogik med hjälp av  Jämförelsegränssnitt .

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

Produktion
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Förklaring:

  • Comparator tillåter anpassad sorteringslogik utan att ändra klassen.
  • Här sorteras eleverna efter rullnummer.

Naturlig sortering med jämförbart gränssnitt

I exemplet nedan sorterar vi en array av studentobjekt baserat på deras namn alfabetiskt.

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

Produktion
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Förklaring:

  • I det här exemplet använder vi Jämförbart gränssnitt att definiera en naturlig ordning för Studentobjekten.
  • Genom att implementera metoden specificerar vi hur två Studentobjekt ska jämföras genom att möjliggöra sortering utifrån elevens namn.

Detta tillåter oss att använda metoden Arrays.sort() direkt på en array av Student-objekt för att sortera dem i en ordning och här behöver vi inte en separat komparator.

Skapa frågesport