[Java 컬렉션] Java Collection 정렬의 3가지 방법
Java에서 컬렉션을 정렬하는 세 가지 주요 방법과 각각의 특징을 설명합니다. - Comparable Interface, Anonymous Class(Comparator), Lambda(Comparator)
1. Comparable 인터페이스 구현
사용자 클래스에 정렬 기준 정의
Comparable 인터페이스는 @Fun… 가지며, compareTo 를 추상메소드로 가짐
public class Student implements Comparable<Student> {
private int id;
private String name;
@Override
public int compareTo(Student other) {
return this.id - other.id; // id 기준 오름차순
}
}
Collection.sort(객체); //로 사용
2. Anonymous Class를 사용한 정렬
Comparator 구현을 익명 클래스로
Collections.sort(a1, new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
return o1.itemId - o2.itemId;
}
})
3. Lambda를 사용한 정렬
Comparator 구현을 람다로 간략히
List<Student> students = new ArrayList<>();
// id 기준 정렬
Collections.sort(students, (s1, s2) -> s1.getId() - s2.getId());
// 이름 기준 정렬
Collections.sort(students, (s1, s2) -> s1.getName().compareTo(s2.getName()));
// 복합 조건 정렬 (삼항 연산자 사용)
Collections.sort(students, (s1, s2) ->
s1.getId() == s2.getId() ?
s1.getName().compareTo(s2.getName()) :
s1.getId() - s2.getId()
);
💡 실무 추천 방식
- 1번 정렬: Collections.sort() 로 사용 -> Student 이 스스로 정렬 규칙을 가짐
- 3번 정렬: Lambda 표현식 사용 (코드 간결성)
상황에 따라 적절한 정렬 방식을 선택하되, 가독성과 유지보수성을 고려하여 Lambda 표현식 사용을 권장합니다.
댓글남기기