gpt4 book ai didi

java - 流分组值

转载 作者:行者123 更新时间:2023-11-30 08:05:01 24 4
gpt4 key购买 nike

是否有 groupingBy 的非终端版本或其他一些巧妙的方式来流式处理生成的 Map 条目/值?

我发现自己想在 groupingBy 之后流式传输值,但我能想到的最好的方法并不漂亮:

    StreamEx.ofValues(
StreamEx.of(0, 1, 2, 4).groupingBy(i -> i % 2)
).mapToInt(ii -> IntStreamEx.of(ii).sum())
// RESULT: [6, 1]

最佳答案

在单个 Stream 管道中执行此操作可能需要所需的操作就像一个完整的屏障:为了对值进行分组,我们需要处理它们以查看哪些值是偶数和奇数(并能够求和他们)。

因此,最好使用临时数据结构来保存偶数和奇数的计数,在本例中为 Map<Integer, Integer>。甚至是 Map<Boolean, Integer> (例如,对于偶数,键为 true,对于奇数,键为 false,使用 Collectors.partitioningBy)。


请注意,您不需要在此处使用 StreamEx 库。您可以直接通过 Stream API 执行此操作:

public static void main(String[] args) {
Map<Integer, Integer> map =
Stream.of(0, 1, 2, 4)
.collect(Collectors.groupingBy(
i -> i % 2,
Collectors.summingInt(i -> i)
));

Stream<Integer> stream = map.values().stream();
}

关于java - 流分组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com