본문으로 건너뛰기

Java String 배열 정렬

자바에서 문자열 배열을 정렬하는 방법을 소개합니다.

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