Functional Programming With Java 简明教程
Functional Programming - Infinite Streams
集合是内存中数据结构,其中包含集合中存在的所有元素,并且我们有外部迭代来遍历集合,而流是按需计算元素的固定数据结构,并且流具有内部迭代来遍历每个元素。以下示例演示如何从数组创建流。
int[] numbers = {1, 2, 3, 4};
IntStream numbersFromArray = Arrays.stream(numbers);
上面的流具有固定大小,由四个数字数组构成,并且在第四个元素后不会返回元素。但是,我们可以使用 Stream.iterate() 或 Stream.generate() 方法创建流,该方法可以有将传递到流的 lambda 表达式。使用 lambda 表达式,我们可以传递在满足某个条件后给定所需元素的条件。考虑一种情况,我们需要一个包含 3 的倍数的数字列表。