首页 > 解决方案 > 创建可重用的 IntStreams 有用吗?如果是,如何?

问题描述

我想知道,为以下问题创建可重用的 IntStream 是否有意义以及如何这样做。

基本上,我需要遍历要检测的数字的 int[],并在另一个 int[] 中计算这些数字的频率。

如果我有一个 IntStream-Supplier,它可以在某个循环中重复使用。所以,我正在寻找类似的东西

int[] intsToBeDectected = new int[]{1,2,3}
int[] numbers = new int[]{1,1,1,2,3,3,3,3,3}
Supplier<IntStream> supplier = IntStream.of(numbers); // ERROR
for (int i : intsToBeDetected){
   int freq = (int) supplier.get().filter(n -> n=i).count();
}

从java中的对象流,我知道这样的事情:

Supplier<Stream<Object>> supplier = () -> Arrays.stream(objects)

这个对象流是可重用的,例如:

supplier.get().filter()...

但是,我不知何故未能将这个想法转移到 IntStreams - 它没有在用 ERROR 注释的行中编译。

转移这个概念有意义吗?如果是,该怎么做?

标签: javastream

解决方案


代替

Supplier<IntStream> supplier = IntStream.of(numbers); // ERROR

Supplier<IntStream> supplier = () -> IntStream.of(numbers);

推荐阅读