gpt4 book ai didi

java - 在 Java Streams 中按范围分组

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:20 24 4
gpt4 key购买 nike

我需要做一些非常简单的事情,但我做不到。我有一个名为 brightnessArray 的 double 组,它是从 HSB(色调、亮度、饱和度)对象数组中提取的,如下所示:

double[] brightnessArray = Arrays.stream(hsbSourcePixelArray)
.mapToDouble(b -> b.brightness).toArray();

现在,我需要将它们分组到 256 个容器中。我试图通过写这样的东西来做到这一点:

Map<Integer, Integer> brightnessHistogram = Arrays.stream(brightnessArray)
.collect(Collectors.groupingBy(b -> b/256, Collectors.counting()));

但这并没有在 b/256 部分进行编译,其中显示 Operator/无法应用于 java.lang.Object, int

我不确定如何进行此分组。我在这里做错了什么?

最佳答案

好吧,你激起了我的好奇心。这是实现此目的的一种方法。

    Stream<Double> ds = Arrays.stream(input).boxed();
Map<Integer,Long> result = ds.collect(Collectors.groupingBy(v->v.intValue()/256, Collectors.counting()));

这使用了级联groupingBy,它需要第二个Collector

可能有一种方法可以使用 DoubleStream 来完成此任务,但我发现我对专用流的了解还不如我想象的那么多。以后研究一些有趣的东西。

关于java - 在 Java Streams 中按范围分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40968522/

24 4 0