gpt4 book ai didi

java - 在使用流 API 的 Java 8 中,如何从需要多次计算的 Map 返回实例

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:02 25 4
gpt4 key购买 nike

假设有这样一个类:

class A {

long sent;
long received;
double val; // given as max {(double)sent/someDenominator,(double)received/someDenominator}
}

其中在 Map<String , A> 中有多个实例引用.

是否有可能使用流 API 一次性返回具有以下属性的类 A 的实例:

  • sent = 所有实例发送字段的总和
  • received = 来自 Map 中所有实例的接收字段的总和
  • val = val 的最大值,给定所有条目,其中 val = max {sent/someDenominator,received/someDenominator}

什么是使用标准 for 循环和一次迭代的微不足道的任务,我不知道如何使用流 API 来实现。

最佳答案

你可以使用reduce:

Optional<A> a = map.values()
.stream()
.reduce((a1, a2) -> new A(a1.sent + a2.sent, a1.received + a2.received, Math.max(a1.val, a2.val)));

关于java - 在使用流 API 的 Java 8 中,如何从需要多次计算的 Map 返回实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35361734/

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