람다를 사용하여 Java 8에서 목록 정렬 방법

Java 8에서는 List를 익명 Comparator를 사용하는 대신 Lambda 식으로 정렬 할 수 있습니다.

통사론:

list.sort( (a, b) -> a.compareTo( b ) );

이 예에서는 임의의 정수 목록을 만듭니다. 이 목록은 출력에 인쇄되어 순서를 표시합니다. 그런 다음 목록은 인스턴스 개체의 sort 메서드를 호출하여 정렬됩니다. 비교자를 매개 변수로 전달합니다. 목록의 값이 올바르게 정렬되었음을 보여주기 위해 출력에 해당 목록이 기록됩니다.

다음 java 파일을 만듭니다.

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와 같은 모든 목록 구현에서 사용할 수 있습니다.

참고 문헌 :

Lambda Expressions

최근 댓글