在Java 8中,可以使用Lambda表达式对Stream类的元素进行排序,而无需创建匿名比较器。
stream.sorted( (a, b) -> a.compareTo( b ) )
这个例子首先创建一个测试对象流。 每个Test对象都有一个名为name的String变量。 这是将用于排序的变量。 然后,使用排序的方法根据对象名称对流进行排序。
最后,使用forEach方法将Stream中的所有元素写入输出。 呼叫在流上按顺序完成。 代码更容易理解,因为更少的代码特别用于过滤流的元素。
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表达式非常通用,与使用相同逻辑创建java方法相比,它会产生性能影响。 使用lambda表达式可以编写更小更简单的代码。 从长远来看,这将更容易理解和维护。