gpt4 book ai didi

java - 在 Java 8 中从整数数组减少到 double

转载 作者:行者123 更新时间:2023-12-03 21:47:26 27 4
gpt4 key购买 nike

这是我的代码:

// assuming HashMap<String, Integer> hashmap
double sum = hashmap.values().stream()
.reduce(.0, (i, v) -> i + Math.pow(v,2) + 0.5 );

在这种情况下,reduce 应该取 (Integer i) 和 (double v) 并对它们求和,然后将此 reduce 作为 double 返回。

相反,我得到了这个错误:

- The method reduce(Integer, BinaryOperator<Integer>) in the type Stream<Integer> is not applicable for the arguments (double, (<no type> i, <no type> v) -> {})

- Type mismatch: cannot convert from double to Integer

减少,

但是,这修复了:

// assuming HashMap<String, Integer> hashmap
double sum = hashmap.values().stream()
.map((t)->(double)t)
.reduce(.0, (i, v) -> i + Math.pow(v,2) + 0.5 );

有没有更优雅的方法?

最佳答案

您只是想对 v * v + 0.5 的值求和吗?

如果是这样,最清晰的解决方案是

double sum = 0;
for (int v : hashmap.values())
sum += v * v + 0.5;

如果您必须使用流,答案是

double sum = hashmap.values().stream().mapToDouble((v) -> v * v + 0.5).sum();

但尝试使用 reduce() 执行此操作毫无意义,因为 0.0 不是累加器的标识,并且累加器不是关联的。

关于java - 在 Java 8 中从整数数组减少到 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970966/

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