카테고리 없음

자바의 람다식 메서드 소개와 활용 예(Comparator) 심화

백봉 2023. 4. 12. 00:37

자바의 람다식 메서드 소개와 활용 예(Comparator) 심화

자바 8 이상부터 사용 가능한 람다식 메서드는 기존의 메서드보다 간결하고 가독성이 좋다는 장점을 가지고 있습니다. 대표적으로 Comparator 인터페이스를 이용한 정렬에 사용되며 람다식을 이용하면 코드가 매우 간결해집니다.

람다식 메서드란?

람다식은 익명 함수를 지칭합니다. 이름 없는 함수를 만들고, 이 함수를 변수에 대입해 사용할 수 있습니다. 람다식은 코드가 간편하고 가독성이 높으며, 익명함수를 사용하기 위한 복잡한 과정을 줄일 수 있습니다.

Comparator 인터페이스와 람다식

Comparator 인터페이스는 두 객체를 비교하는 인터페이스입니다. 이 인터페이스를 구현하여 객체를 정렬하는 방식을 지정할 수 있습니다. 람다식을 사용하면 구현 코드가 매우 간결하게 표현됩니다.

Comparator<String> comp = (s1, s2) -> s1.compareTo(s2);

위 코드는 String 타입 두 개를 비교하여 compareTo() 메서드를 이용해 정렬하는 코드입니다. 람다식을 이용한 코드의 경우, 리턴값과 메서드 명이 생략되므로 코드가 매우 간결하게 표현됩니다.

활용 예: 역순 정렬

Comparator 인터페이스는 sort() 메서드에서 많이 사용됩니다. sort()는 배열이나 리스트를 정렬하는 메서드로, 정렬 방식을 Comparator를 이용해 지정할 수 있습니다. 예를 들어 역순으로 정렬하고 싶다면 다음과 같이 Comparator를 이용한 람다식을 사용할 수 있습니다.

List<String> list = Arrays.asList("apple", "banana", "melon");
Collections.sort(list, (s1, s2) -> s2.compareTo(s1));

위 코드는 리스트를 역순으로 정렬하는 코드입니다. sort() 메서드의 두 번째 인자로 람다식을 전달하면서 s2.compareTo(s1) 코드를 사용하여 역순으로 정렬합니다.

활용 예: 객체 리스트 정렬

객체 리스트에서 특정 필드를 기준으로 정렬하고 싶다면 Comparator 인터페이스를 이용한 람다식을 사용할 수 있습니다. 예를 들어, Student 객체를 name 필드를 기준으로 정렬해보겠습니다.

class Student {
    private String name;
    private int age;

    // getters, setters, constructors
}

List<Student> students = Arrays.asList(
    new Student("Alice", 20),
    new Student("Bob", 25),
    new Student("Charlie", 22)
);

Collections.sort(students, (s1, s2) -> s1.getName().compareTo(s2.getName()));

위 코드는 Student 객체 리스트를 name 필드를 기준으로 정렬하는 코드입니다. 람다식을 이용해 s1.getName().compareTo(s2.getName()) 코드를 실행하여 name 필드를 기준으로 정렬합니다.

결론

자바 8 이상에서 사용 가능한 람다식을 이용해 Comparator 인터페이스를 구현하는 코드는 기존의 코드보다 간결하고 가독성이 높아집니다. 객체 리스트에서 특정 필드를 기준으로 정렬하는 등 다양한 활용 방식이 있으므로, 람다식을 익혀놓으면 유용하게 활용할 수 있을 것입니다.


이미지