자바 Collections에서 정렬하는 방법은 무엇인가요?

자바 Collections에서 정렬하는 방법에 대해 설명드리겠습니다.

자바에서는 컬렉션(Collection) 자료구조의 요소들을 정렬하기 위해 주로 `Collections.sort()` 메서드 를 사용합니다.

또한, 자바 8부터는 람다 표현식과 Comparator 인터페이스 를 활용하여 보다 유연한 정렬이 가능합니다.

--- 1. `Collections.sort()` 메서드 사용하기 `Collections.sort()`는 `List` 인터페이스를 구현한 리스트를 오름차순으로 정렬합니다.

```java List list = Arrays.asList(5, 3, 8, 1); Collections.sort(list); System.out.println(list); // 출력: [1, 3, 5, 8] ``` - 요소가 `Comparable`을 구현해야 함 `Collections.sort()`를 활용하려면 리스트 내 객체가 `Comparable` 인터페이스를 구현해야 합니다.

기본 자료형 래퍼클래스(`Integer`, `String` 등)은 이미 구현되어 있습니다.

```java class Person implements Comparable { String name; int age; // 생성자, getter, setter 생략 // 나이 기준 오름차순 정렬 @Override public int compareTo(Person other) { return Integer.compare(this.age, other.age); } } ``` 2. Comparator를 사용한 정렬 `Comparable` 대신 `Comparator` 인터페이스를 사용하면, 객체 내부 코드를 수정하지 않고도 다양한 정렬 기준을 적용할 수 있습니다.

```java List people = Arrays.asList( new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 35) ); // 이름 기준 오름차순 정렬 Collections.sort(people, new Comparator() { @Override public int compare(Person p1, Person p2) { return p1.name.compareTo(p2.name); } }); ``` - 자바 8 이상: 람다 표현식으로 간결하게 ```java Collections.sort(people, (p1, p2) -> p1.name.compareTo(p2.name)); ``` 또는 `List`의 `sort()` 메서드 사용 가능: ```java people.sort(Comparator.comparing(Person::getName)); ``` 3. 내림차순 정렬 `Comparator`의 `reversed()` 메서드를 이용하면 쉽게 내림차순 정렬도 할 수 있습니다.

```java people.sort(Comparator.comparing(Person::getAge).reversed()); ``` 4. 정리 | 정렬 방법 | 설명 | 예제 | |---------------------------------|-------------------------------------------------------------------|--------------------------------------------| | `Collections.sort(List)` | 리스트 내 객체가 `Comparable` 구현 시 오름차순 정렬 | `Collections.sort(list);` | | `Collections.sort(List, Comparator)` | 사용자 정의 정렬 기준에 맞게 정렬 | `Collections.sort(list, comparator);` | | `List.sort(Comparator)` | 자바 8부터 도입된 메서드, 람다와 함께 자주 사용 | `list.sort((a, b) -> a.getName().compareTo(b.getName()));` | | 내림차순 정렬 | `Comparator.reversed()` 메서드 활용 | `list.sort(Comparator.comparing(...).reversed());`| --- 참고 코드 예제 ```java import java.util.*; class Person implements Comparable { String name; int age; Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public int compareTo(Person other) { return Integer.compare(this.age, other.age); } @Override public String toString() { return name + "(" + age + ")"; } } public class SortExample { public static void main(String[] args) { List people = new ArrayList<>(); people.add(new Person("Alice", 30)); people.add(new Person("Bob", 25)); people.add(new Person("Charlie", 35)); // 기본 내림차순 Collections.sort(people); System.out.println("나이 오름차순: " + people); // 이름 오름차순 people.sort(Comparator.comparing(Person::getName)); System.out.println("이름 오름차순: " + people); // 이름 내림차순 people.sort(Comparator.comparing(Person::getName).reversed()); System.out.println("이름 내림차순: " + people); } } ``` --- 이상으로 자바 컬렉션에서 정렬하는 기본적인 방법과 사용법에 대해 설명드렸습니다.

필요에 따라 적절히 `Comparable` 또는 `Comparator`를 이용하면 다양한 정렬 요구사항을 반영할 수 있습니다.


관련 게시글

자바에서 병렬 처리를 구현하는 방법은 무엇인가요?

자바에서 병렬 처리는 여러 작업을 동시에 실행하여 프로그램의 성능과 응답성을 향상시키는 기법입니다....

문제 해결 및 면접 질문

문제 해결 및 면접 질문에 관한 글 --- 1. 문제 해결의 중요성 문제 해결 능력은 개인과...

자바에서 중복된 요소를 제거하는 방법은 무엇인가요?

자바(Java)에서 중복된 요소를 제거하는 방법에는 여러 가지가 있습니다. 주로 컬렉션프레임워크를 활용하...

자바의 메모리 누수 문제를 해결하는 방법은 무엇인가요?

자바의 메모리 누수 문제를 해결하는 방법 --- 1. 메모리 누수란? 자바는 가비지 컬렉션(GC)...

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요.

팩토리 패턴을 사용하여 주어진 문제를 해결해보세요. --- 1. 팩토리 패턴이란? 팩토리 패턴...

자바에서 다중 스레드 프로그램의 성능 향상 기법은 무엇인가요?

자바에서 다중 스레드 프로그램의 성능 향상 기법 자바는 멀티스레딩(Multithreading)을 지원하여 CPU...