Java

Java - Comparator 예제 (lambda 표현식)

codeManager 2023. 1. 20. 18:03
반응형

 

자바에서 리스트를 sort할때 Comparator를 사용합니다.

 

자주 쓰는 Comparator를 정의해 놓으면 재사용이 가능합니다.

 

Comparator를 만드는 예제에 대해서 알아보겠습니다.

 

1. Comparator 예제

 

public static Comparator<String> getStringComparator() {
    return new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            return o1.compareTo(o2);
        }
    };
}

 

보통은 이런식으로 Comparator를 만들어 줍니다.

 

compare 함수를 override해서 anonymous 클래스를 return해줍니다.

 

 

이렇게 함수를 만들면 IntelliJ에서 이런 warning을 띄웁니다.

 

Anonymous new Comparator<String>() can be replaced with lambda
 

 

Anonymous 클래스를 lambda로 바꿀 수 있으니 바꾸는 게 좋겠다고 합니다.

 

그래서 람다 표현식으로 바꿔 보았습니다.

 

 

2. Comparator lambda 표현식

 

public static Comparator<String> getStringComparator() {
    return (o1, o2) -> o1.compareTo(o2);
}

 

람다를 사용하니까 이렇게 한줄로 간단하게 표현이 가능합니다.

 

 

3. Comparator 이용해서 정렬하기

 

List<String> list = Arrays.asList("a", "b", "c");

List<String> result = list.stream()
    .sorted(getStringComparator())
    .collect(Collectors.toList()));

 

.sorted() 함수에 정의한 Comparator를 넣어주면 됩니다.

반응형