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() 메서드를 사용하여 순서대로 정렬할 수 있으며 여기서는 별도의 비교기가 필요하지 않습니다.
퀴즈 만들기