Java の Arrays.sort()

Java の Arrays.sort()
GfG Practice で試してみる

Java の Arrays.sort() メソッドは、配列の要素をソートするために使用されます。

  • コンパレータを使用して、配列全体、サブ配列、さらにはカスタム オブジェクトを並べ替える柔軟なオプションを提供します。
  • プリミティブ配列 (int char など) とオブジェクト配列 (Integer String など) の両方をソートできます。

例: 整数配列と文字配列を昇順でソートする

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

出力
[-1 2 3 4] [a b b c]  

説明:

  • Arrays.sort() は要素を昇順に並べ替えます。
  • 重複は削除されません。
  • プリミティブ配列ではカスタム コンパレータを使用できません。

Arrays.sort() メソッドの構文

1. 配列全体をソートするには

Arrays.sort(); 

2. 部分配列をソートするには

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

パラメータ:

  • 到着しました : ソートする配列。
  • from_Index: ソートされる最初の要素 (両端を含む) のインデックス。
  • to_Index : ソートされる最後の要素 (排他的) のインデックス。
  • 戻り値の型: void (このメソッドは何も返しません)。

注記:

  • Arrays.sort() は重複を削除しません。要素の順序を変更するだけです。
  • プリミティブ型ではカスタム コンパレータを使用できません。並べ替えは自然 (昇順) 順に行われます。

例 : サブ配列のソート

開始 (包含) インデックスと終了 (排他的) インデックスを指定することで、配列の一部を並べ替えることができます。

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

出力
[2 -1 3 4]  

説明: インデックス 1、2、および 3 の要素のみが並べ替えられます。インデックス 0 の要素は変更されません。

降順ソート

配列を降順に並べ替えるには、Arrays.sort() メソッドと Collections.reverseOrder() をコンパレーターとして使用できます。

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

出力
[4 3 2 -1] [chauhan Vishnu Hii]  

説明:

  • オブジェクト配列に対してのみ機能します。プリミティブ型 (int) ではコンパレータを使用できません。
  • 文字列の場合、辞書順に Z -> A にソートされます。

コンパレータを使用したカスタム並べ替え

を使用してカスタム並べ替えロジックを定義することで、オブジェクトの配列を並べ替えることができます。  コンパレータインターフェース

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

出力
1 Ram MP 2 Shyam UP 3 Hari Delhi  

説明:

  • Comparator を使用すると、クラスを変更せずにカスタムの並べ替えロジックが可能になります。
  • ここでは学生はロール番号順に並べ替えられます。

同等のインターフェイスによる自然な並べ替え

以下の例では、Student オブジェクトの配列を名前に基づいてアルファベット順に並べ替えます。

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

出力
3 Hari Bihar 1 Ram UP 2 Shyam MP  

説明:

  • この例では、 同等のインターフェース Student オブジェクトの自然な順序を定義します。
  • このメソッドを実装することで、生徒の名前に基づいた並べ替えを有効にして、2 つの Student オブジェクトを比較する方法を指定します。

これにより、Student オブジェクトの配列に対して Arrays.sort() メソッドを直接使用して、オブジェクトを順序で並べ替えることができるようになり、別個のコンパレーターは必要なくなります。

クイズの作成