在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表达式可以编写更小更简单的代码。 从长远来看,这将更容易理解和维护。