오늘은 Java에서 배열을 정렬할 때 유용하게 사용되는 Arrays.sort
와 이를 활용한 커스텀 정렬 방법에 대해 알아보겠다. 기본적인 오름차순 정렬은 자주 사용되지만, 특정 조건에 맞춰 배열을 정렬해야 하는 경우가 생기기 마련이다. 이럴 때 Comparator
인터페이스를 활용하면 원하는 기준으로 배열을 정렬할 수 있다.
Arrays.sort
기본 사용법먼저, Arrays.sort
의 기본 사용법에 대해 알아보겠다. 이 메서드는 배열을 오름차순으로 정렬하는데, 기본 데이터 타입과 객체 배열에 모두 사용할 수 있다.
가장 간단한 형태로 Arrays.sort
를 사용하는 방법은 다음과 같다.
int[] numbers = {5, 3, 8, 1, 2};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // [1, 2, 3, 5, 8]
위 코드에서는 numbers
배열이 오름차순으로 정렬되었다. 기본 데이터 타입 배열은 자동으로 작은 값부터 큰 값으로 정렬된다.
객체 배열의 경우에도 Arrays.sort
를 통해 정렬할 수 있다. 예를 들어, 문자열 배열을 정렬하면 다음과 같이 된다.
String[] words = {"banana", "apple", "grape", "orange"};
Arrays.sort(words);
System.out.println(Arrays.toString(words)); // [apple, banana, grape, orange]
이 코드에서는 문자열 배열이 알파벳 순서대로 정렬된다. 기본적으로 객체 배열은 사전순으로 정렬된다.
Comparator
사용기본 정렬 외에, 특정한 기준에 맞춰 배열을 정렬해야 할 때가 있다. 이럴 때 Comparator
를 사용해 나만의 정렬 기준을 정의할 수 있다.
예를 들어, 문자열 배열을 길이에 따라 정렬하고 싶다면 다음과 같이 할 수 있다.
String[] words = {"banana", "apple", "grape", "orange"};
Arrays.sort(words, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return Integer.compare(s1.length(), s2.length());
}
});
System.out.println(Arrays.toString(words)); // [apple, grape, banana, orange]
위 코드에서는 문자열의 길이를 기준으로 배열이 정렬되었다. 짧은 문자열이 먼저 오고, 긴 문자열이 뒤에 오게 된다.
숫자 배열을 내림차순으로 정렬하는 것도 가능하다. 이를 위해 Comparator
를 사용하여 정렬 기준을 정의할 수 있다.
Integer[] numbers = {5, 3, 8, 1, 2};
Arrays.sort(numbers, new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return b - a; // 내림차순으로 정렬
}
});
System.out.println(Arrays.toString(numbers)); // [8, 5, 3, 2, 1]
위 예제에서는 큰 숫자가 먼저 오도록 내림차순으로 배열을 정렬하였다.
문자열 배열을 특정 인덱스의 문자에 따라 정렬하고 싶을 때도 있다. 예를 들어, 문자열의 두 번째 문자를 기준으로 정렬하려면 다음과 같이 할 수 있다.
String[] words = {"sun", "bed", "car"};
Arrays.sort(words, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
int index = 1; // n번째 인덱스
char c1 = s1.charAt(index);
char c2 = s2.charAt(index);
return Character.compare(c1, c2);
}
});
System.out.println(Arrays.toString(words)); // [car, bed, sun]
이 코드에서는 각 문자열의 두 번째 문자를 기준으로 배열이 정렬되었다. car
의 두 번째 문자 a
, bed
의 두 번째 문자 e
, sun
의 두 번째 문자 u
가 각각 비교되어 정렬된다.
Java에서 Arrays.sort
는 매우 강력한 도구이다. 기본적으로 오름차순 정렬을 제공하지만, Comparator
를 활용하면 다양한 기준에 따라 배열을 커스텀 정렬할 수 있다.