Java'da Arrays.sort()

Java'da Arrays.sort()
GfG Practice'de deneyin

Java'daki Arrays.sort() yöntemi, bir dizinin öğelerini sıralamak için kullanılır.

  • Karşılaştırıcılar kullanarak tüm dizi alt dizilerini ve hatta özel nesneleri sıralamak için esnek seçenekler sunar.
  • Hem ilkel dizileri (int char vb.) hem de nesne dizilerini (Integer String vb.) sıralayabilir.

Örnek: Tam sayı ve karakter dizilerini artan düzende sıralama

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

Çıkış
[-1 2 3 4] [a b b c]  

Açıklama:

  • Arrays.sort() öğeleri artan sırada yeniden sıralar.
  • Kopyalar kaldırılmaz.
  • İlkel diziler özel karşılaştırıcıları kullanamaz.

Arrays.sort() Yönteminin Söz Dizimi

1. Dizinin tamamını sıralamak için

Diziler.sort(); 

2. Bir alt diziyi sıralamak için

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

Parametreler:

  • varış : Sıralanacak dizi.
  • from_Index: Sıralanacak ilk öğenin (dahil) dizini.
  • to_Index : Sıralanacak son öğenin (özel) dizini.
  • İade Türü: void (Bu yöntem hiçbir şey döndürmez).

Not:

  • Arrays.sort() kopyaları kaldırmaz; yalnızca öğeleri yeniden sıralar.
  • İlkel türler özel karşılaştırıcıları kullanamaz; sıralama doğal (artan) sıradadır.

Örnek: Alt Diziyi Sıralama

Başlangıç ​​(dahil) ve bitiş (hariç) endekslerini belirterek dizinin bir bölümünü sıralayabilirsiniz.

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

Çıkış
[2 -1 3 4]  

Açıklama: Yalnızca 1, 2 ve 3 numaralı indekslerdeki öğeler sıralanır; 0 dizinindeki öğe değişmeden kalır.

Azalan Sıralama

Bir diziyi azalan düzende sıralamak için karşılaştırıcı olarak Arrays.sort() yöntemini Collections.reverseOrder() ile birlikte kullanabiliriz.

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

Çıkış
[4 3 2 -1] [chauhan Vishnu Hii]  

Açıklama:

  • Yalnızca nesne dizilerinde çalışır; ilkel türler (int) karşılaştırıcıları kullanamaz.
  • Dizeler için sözlükbilimsel olarak Z -> A şeklinde sıralar.

Karşılaştırıcı ile Özel Sıralama

kullanarak bir dizi nesneyi özel sıralama mantığı tanımlayarak sıralayabiliriz.  Karşılaştırıcı arayüzü .

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

Çıkış
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Açıklama:

  • Karşılaştırıcı, sınıfı değiştirmeden özel sıralama mantığına izin verir.
  • Burada öğrenciler rulo numarasına göre sıralanır.

Karşılaştırılabilir Arayüz ile Doğal Sıralama

Aşağıdaki örnekte bir dizi Öğrenci nesnesini adlarına göre alfabetik olarak sıralıyoruz.

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

Çıkış
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Açıklama:

  • Bu örnekte şunu kullanıyoruz: Karşılaştırılabilir arayüz Öğrenci nesneleri için doğal bir sıralama tanımlamak.
  • Yöntemi uygulayarak, öğrencinin adına göre sıralamayı etkinleştirerek iki Öğrenci nesnesinin nasıl karşılaştırılacağını belirleriz.

Bu, Arrays.sort() yöntemini doğrudan bir dizi Öğrenci nesnesi üzerinde kullanarak bunları bir sıraya göre sıralamamıza olanak tanır ve burada ayrı bir karşılaştırıcıya ihtiyacımız yoktur.

Test Oluştur