Java 8 및 Lambda를 사용하여 스트림을 정렬하는 방법.

Java 8에서는 익명 비교자를 만들지 않고도 Lambda 표현식을 사용하여 Stream 클래스의 요소를 정렬 할 수 있습니다.

통사론:

stream.sorted( (a, b) -> a.compareTo( b ) )

이 예제는 먼저 Test Objects의 Stream을 생성합니다. 각 Test 객체에는 name이라는 String 변수가 있습니다. 이것은 정렬에 사용될 변수입니다. 그런 다음 스트림이 정렬 된 메서드를 사용하여 개체 이름에 따라 정렬됩니다. 마지막으로 스트림의 모든 요소는 forEach 메서드를 사용하여 출력에 기록됩니다. 호출은 스트림에서 순차적으로 수행됩니다. 스트림의 요소를 필터링하기 위해 적은 코드가 특별히 작성되므로 코드를 더 쉽게 이해할 수 있습니다.

다음 java 파일을 만듭니다.

import java.util.stream.Stream;

public class LambdaSortStream {

    public static void main(String[] argv){
		
        Stream<Test> stream = Stream.of( new Test("a"), new Test("c"), new Test("a"), new Test("b"), new Test("b"));
		
        System.out.println( "Sorted Stream: " );
        stream.sorted( (a, b) -> a.name.compareTo( b.name ) )
            .forEach( a -> {
                System.out.println( a.name );
            } );
			
	}
}

class Test {
    Test(String n){
        name = n;
    }
	
    String name;
}

출력은 다음과 같습니다.

Sorted Stream: 
a
a
b
b
c

람다 식은 매우 일반적인 것이므로 같은 논리를 사용하여 자바 메서드를 만드는 것과 비교할 때 성능에 영향을줍니다. 람다 식을 사용하면 더 작고 간단한 코드를 작성할 수 있습니다. 장기적으로 이해하고 유지하는 것이 더 쉬울 것입니다.

참고 문헌 :

Lambda Expressions

최근 댓글