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. 전체 배열을 정렬하려면

배열.정렬(); 

2. 하위 배열을 정렬하려면

공개 정적 void sort(int[] arr int from_Index int to_Index) ;

매개변수:

  • 도착 : 정렬할 배열입니다.
  • from_색인: 정렬할 첫 번째 요소(포함)의 인덱스입니다.
  • 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의 요소는 변경되지 않습니다.

내림차순 정렬

배열을 내림차순으로 정렬하려면 Collections.reverseOrder()를 비교기로 사용하여 Arrays.sort() 메서드를 사용할 수 있습니다.

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 객체의 자연스러운 순서를 정의합니다.
  • 메서드를 구현함으로써 학생 이름을 기준으로 정렬을 활성화하여 두 Student 개체를 비교하는 방법을 지정합니다.

이를 통해 Student 개체 배열에 직접 Arrays.sort() 메서드를 사용하여 순서대로 정렬할 수 있으며 여기서는 별도의 비교기가 필요하지 않습니다.

퀴즈 만들기