람다식과 Collections.sort() 메서드

Soobin Kim·2024년 4월 6일

Java

목록 보기
41/47

Comparator

함수형 인터페이스로, 두 개의 객체를 인자로 받아 그들의 순서를 비교하는 메서드인 compare을 제공하여 객체의 정렬을 가능하게 한다.

.compare()

@FunctionalInterface
public interface Comparator<T> {
    int compare(T o1, T o2);
}

구현 반환 값이 Comparator인 메서드를 할당한다.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

Comparator<String> lengthComparator = (str1, str2) -> Integer.compare(str1.length(), str2.length());
Comparator<String> desc = (str1, str2) -> str1.compareTo(str2);


Collections.sort()

Collections.sort(List<T> list, Comparator<? super T> c)

람다식을 인자로 받는 메서드로, Comparator에 의해 유도된 순서에 따라 List를 정렬한다.

import java.util.*;

public class LambdaSortExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

        // 문자열을 길이에 따라 정렬하는 Comparator 람다식
        Comparator<String> lengthComparator = 
        						(str1, str2) -> Integer.compare(str1.length(), str2.length());

        // 리스트를 정렬
        Collections.sort(names, lengthComparator);

        /* 
            정렬된 리스트:
            Alice
            Bob
            Charlie
            David			*/
        System.out.println("정렬된 리스트:");
        for (String name : names) {
            System.out.println(name);
        }
    }
}

0개의 댓글