如何使用Java 8和Lambda对流进行排序。

在Java 8中,可以使用Lambda表达式对Stream类的元素进行排序,而无需创建匿名比较器。

句法:

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

这个例子首先创建一个测试对象流。 每个Test对象都有一个名为name的String变量。 这是将用于排序的变量。 然后,使用排序的方法根据对象名称对流进行排序。
最后,使用forEach方法将Stream中的所有元素写入输出。 呼叫在流上按顺序完成。 代码更容易理解,因为更少的代码特别用于过滤流的元素。

创建以下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表达式非常通用,与使用相同逻辑创建java方法相比,它会产生性能影响。 使用lambda表达式可以编写更小更简单的代码。 从长远来看,这将更容易理解和维护。

参考文献:

Lambda Expressions

最近评论