728x90
개요
개발을 하다 보면 문자열 데이터를 정렬해야 하는 상황을 자주 마주칩니다.
예를 들어, 사용자 이름을 알파벳순으로 정렬하거나, 상품 목록을 사전순으로 정렬하는 기능은 대부분의 애플리케이션에서 필수적입니다.
그렇다면 Java에서는 문자열을 어떻게 효율적으로 정렬할 수 있을까요? 이번 글에서는 Java에서 문자열을 사전순으로 정렬하는 다양한 방법을 정리하고자 합니다.
Collections.sort() 사용하기 (List 정렬)
Collections.sort() 메서드를 사용하여 리스트에 저장된 문자열을 사전순으로 정렬할 수 있습니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> strings = new ArrayList<>();
strings.add("banana");
strings.add("apple");
strings.add("cherry");
// 사전순 정렬
Collections.sort(strings);
System.out.println(strings); // [apple, banana, cherry]
}
}
Arrays.sort() 사용하기 (배열 정렬)
배열에 저장된 문자열을 사전순으로 정렬하려면 Arrays.sort() 메서드를 사용할 수 있습니다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] strings = {"banana", "apple", "cherry"};
// 사전순 정렬
Arrays.sort(strings);
System.out.println(Arrays.toString(strings)); // [apple, banana, cherry]
}
}
Stream 사용하기
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> strings = Arrays.asList("banana", "apple", "cherry");
// 사전순 정렬
List<String> sortedStrings = strings.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedStrings); // [apple, banana, cherry]
}
}
Comparator로 커스텀 정렬
기본 사전순 외에 대소문자를 무시하거나, 역순으로 정렬하는 등 커스텀 정렬을 하고 싶을 때는 Comparator를 사용합니다.
1. 대소문자 무시 정렬
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] strings = {"Banana", "apple", "Cherry"};
// 대소문자 무시 정렬
Arrays.sort(strings, String.CASE_INSENSITIVE_ORDER);
System.out.println(Arrays.toString(strings)); // [apple, Banana, Cherry]
}
}
2. 역순 정렬
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> strings = Arrays.asList("banana", "apple", "cherry");
// 역순 정렬
strings.sort(Collections.reverseOrder());
System.out.println(strings); // [cherry, banana, apple]
}
}
TreeSet을 이용한 정렬
TreeSet은 삽입하면서 자동으로 정렬된 상태를 유지합니다.
import java.util.Set;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Set<String> strings = new TreeSet<>();
strings.add("banana");
strings.add("apple");
strings.add("cherry");
System.out.println(strings); // [apple, banana, cherry]
}
}
간단히 정리하자면
- 간단한 정렬은 Collections.sort() 또는 Arrays.sort() 사용.
- Stream을 사용하면 정렬 후 새로운 리스트를 생성 가능.
- 복잡한 조건이나 커스텀 정렬이 필요하면 Comparator 활용.