on it road.com
如何遍历 IntStream
要循环遍历元素,流支持 forEach() 操作。
import java.util.stream.IntStream; public class ForEachExample { public static void main(String[] args) { //Simple for-loop for(int i=0; i < 5; i++) { doSomething(i); } //IntStream forEach IntStream.rangeClosed(0, 4) .forEach( ForEachExample::doSomething ); } private static void doSomething(int i) { System.out.println(i); } }
过滤 IntStream 流
我们可以对流产生的 int 值应用过滤,并在另一个函数中使用它们或者收集它们以进行进一步处理。
例如,我们可以迭代 int 值并过滤/收集所有质数。
import java.util.List; import java.util.function.IntPredicate; import java.util.stream.Collectors; import java.util.stream.IntStream; public class FilterExample { public static void main(String[] args) { IntStream stream = IntStream.range(1, 100); List<Integer> primes = stream.filter(FilterExample::isPrime) .boxed() .collect(Collectors.toList()); System.out.println(primes); } public static boolean isPrime(int i) { IntPredicate isDivisible = index -> i % index == 0; return i > 1 && IntStream.range(2, i).noneMatch(isDivisible); } }
Java 创建 IntStream
有多种创建 IntStream
的方法。
使用IntStream.of()创建 IntStream
此函数返回一个顺序有序的流,其元素是指定的值。
它有两个版本,例如:单元素流和多值流
IntStream of(int t)
- 返回包含单个指定元素的流。IntStream of(int... values)
- 返回包含指定所有元素的流。
IntStream.of(10); //10 IntStream.of(1, 2, 3); //1,2,3
使用 IntStream.range() 和 IntStream.rangeClosed()
这些函数将在后面的第 (3) 节中更详细地讨论。
在这个方法中,我们提供了一个值范围(范围的开始和结束),然后函数返回从开始值到结束值的所有 int 值。
IntStream.range(1, 5); //1,2,3,4,5
使用 IntStream.iterate()
iterator()
函数对于创建无限流很有用。
此外,我们可以使用此方法来生成值按 1 以外的任何其他值递增的流。
给定的示例生成从 0 开始的前 10 个偶数。
IntStream.iterate(0, i -> i + 2).limit(10); //0,2,4,6,8,10,12,14,16,18
使用IntStream.generate()
generate()
看起来很像 iterator()
,但不同之处在于不通过增加前一个值来计算 int 值。
而是提供了一个 IntSupplier,它是一个功能接口,用于生成一个无限连续的无序 int 值流。
以下示例创建 10 个随机数的流,然后在控制台中打印它们。
IntStream stream = IntStream.generate(() -> { return (int)(Math.random() * 10000); }); stream.limit(10).forEach(System.out::println);
Java IntStream类是int原语的“Stream”接口的特殊化。它表示支持顺序和并行聚合操作的原始int值元素流。
IntStream
是 java.util.stream
包的一部分,实现了 AutoCloseable
和 BaseStream
接口。
日期:2020-09-17 00:09:36 来源:oir作者:oir