最近我在学习Java 8的特性,所以我从一个lambda表达式开始,然后我遇到了Java流API,现在我正试图理解流API中的方法,它们是如何工作的?
我对lambda表达式的理解是,如果我们想要将lambda表达式传递给方法,那么我们需要创建一个具有单个未实现方法(Java 8接口可以有默认实现)的接口,该接口与lambda表达式的签名相匹配。然后,向其传递lambda表达式的方法可以通过调用接口方法来执行lambda表达式。所以我可以说,lambda表达式是作为接口方法的实现工作的。
但是当我看到stream API时,它有一些方法可以改变流,例如下面的代码只是通过过滤小于5的整数来打印整数。
import java.util.Arrays;
import java.util.List;
public class StreamDemo {
static List<Integer> list= Arrays.asList(new Integer(1), new Integer(2), new Integer(3), new Integer(4), new Integer(5), new Integer(6));
public static void main(String[] ar) {
list.parallelStream()
.filter( x-> x<5)
.forEach(System.out::print);
}
}提前谢谢。
发布于 2017-05-28 20:56:17
像List一样,Stream只是一个接口。在运行时,Java挑选一个完成这项工作的实现。如果您想知道filter方法是如何实现的,您可以在java.util.stream.ReferencePipeline#filter中找到一个示例。
我希望这能回答你的问题。
https://stackoverflow.com/questions/44227325
复制相似问题