자바에서 문자열 배열을 정렬하는 방법을 소개합니다.
1. Arrays.sort()로 문자열 배열 정렬
1.1 오름차순 정렬
Arrays.sort(array)
는 인자로 전달된 배열을 오름차순으로 정렬합니다.
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
String[] arr = {"New York", "Mumbai", "London", "Chicago", "Seoul", "Tokyo"};
Arrays.sort(arr);
System.out.println("arr: " + Arrays.toString(arr));
}
}
Output:
arr: [Chicago, London, Mumbai, New York, Seoul, Tokyo]
1.1 내림차순 정렬
Arrays.sort()
로 정렬될 때 내림차순으로 정렬하려면, 두번째 인자로 Collections.reverseOrder()
를 추가하면 됩니다.
import java.util.Arrays;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
String[] arr = {"New York", "Mumbai", "London", "Chicago", "Seoul", "Tokyo"};
Arrays.sort(arr, Collections.reverseOrder());
System.out.println("arr: " + Arrays.toString(arr));
}
}
Output:
arr: [Tokyo, Seoul, New York, Mumbai, London, Chicago]
2. 문자열 길이 순서로 정렬
알파벳의 순서로 비교하지 않고 문자열 길이 순서로 정렬하거나, 다른 기준으로 정렬을 하고 싶을 수가 있습니다.
정렬 규칙을 변경하려면, Comparator를 직접 구현하고 sort()
의 두번째 인자로 전달해야 합니다.
아래 예제는 문자열 길이 순서로, 오름차순 정렬합니다.
import java.util.Arrays;
import java.util.Comparator;
public class Example {
public static void main(String[] args) {
String[] arr = {"New York", "Mumbai", "London", "Chicago", "Seoul", "Tokyo"};
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
System.out.println("arr: " + Arrays.toString(arr));
}
}
Output:
arr: [Seoul, Tokyo, Mumbai, London, Chicago, New York]
2.1 Lambda로 더 간단히 구현
위의 예제에서 익명 클래스로 구현한 것을 Lambda로 표현하면 더 간단히 구현할 수 있습니다.
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
String[] arr = {"New York", "Mumbai", "London", "Chicago", "Seoul", "Tokyo"};
Arrays.sort(arr, (s1, s2) -> s1.length() - s2.length());
System.out.println("arr: " + Arrays.toString(arr));
}
}
2.2 Comparator, 메소드 레퍼런스로 간단히 구현
Comparator.comparingInt()
와 메소드 레퍼런스 표현식인 String::length
를 사용하여, 아래와 같이 간단히 구현할 수 있습니다.
import java.util.Arrays;
import java.util.Comparator;
public class Example {
public static void main(String[] args) {
String[] arr = {"New York", "Mumbai", "London", "Chicago", "Seoul", "Tokyo"};
Arrays.sort(arr, Comparator.comparingInt(String::length));
System.out.println("arr: " + Arrays.toString(arr));
}
}