Java 8에서는 익명 비교자를 만들지 않고도 Lambda 표현식을 사용하여 Stream 클래스의 요소를 정렬 할 수 있습니다.
stream.sorted( (a, b) -> a.compareTo( b ) )
이 예제는 먼저 Test Objects의 Stream을 생성합니다. 각 Test 객체에는 name이라는 String 변수가 있습니다. 이것은 정렬에 사용될 변수입니다. 그런 다음 스트림이 정렬 된 메서드를 사용하여 개체 이름에 따라 정렬됩니다. 마지막으로 스트림의 모든 요소는 forEach 메서드를 사용하여 출력에 기록됩니다. 호출은 스트림에서 순차적으로 수행됩니다. 스트림의 요소를 필터링하기 위해 적은 코드가 특별히 작성되므로 코드를 더 쉽게 이해할 수 있습니다.
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
람다 식은 매우 일반적인 것이므로 같은 논리를 사용하여 자바 메서드를 만드는 것과 비교할 때 성능에 영향을줍니다. 람다 식을 사용하면 더 작고 간단한 코드를 작성할 수 있습니다. 장기적으로 이해하고 유지하는 것이 더 쉬울 것입니다.