Java 8에서는 List를 익명 Comparator를 사용하는 대신 Lambda 식으로 정렬 할 수 있습니다.
list.sort( (a, b) -> a.compareTo( b ) );
이 예에서는 임의의 정수 목록을 만듭니다. 이 목록은 출력에 인쇄되어 순서를 표시합니다. 그런 다음 목록은 인스턴스 개체의 sort 메서드를 호출하여 정렬됩니다. 비교자를 매개 변수로 전달합니다. 목록의 값이 올바르게 정렬되었음을 보여주기 위해 출력에 해당 목록이 기록됩니다.
import java.util.Arrays; import java.util.List; public class LambdaListSort { public static void main(String[] argv){ // Create an unsorted List List<Integer> list = Arrays.asList( 1, 4, 2, 3, 0 ); System.out.println( "Unsorted List:" + list); // Sort the list list.sort( (a, b) -> a.compareTo( b ) ); System.out.println( "Sorted List:" + list); } }
Unsorted List:[1, 4, 2, 3, 0] Sorted List:[0, 1, 2, 3, 4]
앞의 예제에서 sort 메소드를 호출하는 것과 같은 방법으로 Collections 객체를 Comparable 인터페이스를 구현하는 Collections 메소드로 호출 할 수 있습니다. 리스트의 모든 요소는 Comparable를 구현해, 오름차순으로 소트됩니다.
import java.util.Arrays; import java.util.Collections; import java.util.List; public class LambdaListSort2 { public static void main(String[] argv){ // Create an unsorted List List<Integer> list = Arrays.asList( 1, 4, 2, 3, 0 ); System.out.println( "Unsorted List:" + list); // Sort the list Collections.sort( list, (a, b) -> a.compareTo( b ) ); System.out.println( "Sorted List:" + list); } }
Unsorted List:[1, 4, 2, 3, 0] Sorted List:[0, 1, 2, 3, 4]
이 코드는 매우 간단하며 익명의 비교자를 생성하는 시간을 절약 해줍니다. sort 메소드는 ArrayList 또는 LinkedList와 같은 모든 목록 구현에서 사용할 수 있습니다.