【问题标题】:How to sum values from Java Hashmap [duplicate]如何对 Java Hashmap 中的值求和 [重复]
【发布时间】:2014-03-07 02:17:32
【问题描述】:

我需要一些帮助,我正在自学如何在 Java ando 中处理地图,今天我试图从 Hashmap 中获取值的总和,但现在我卡住了。

这是我要求和的地图值。

HashMap<String, Float> map = new HashMap<String, Float>();

map.put("First Val", (float) 33.0);
map.put("Second Val", (float) 24.0);

作为一个额外的问题,如果我在地图中有 10 或 20 个值怎么办,我如何对所有这些值求和,我需要做一个“for”吗?

感谢您的帮助。

【问题讨论】:

  • Insteaf of (float) 33.0 你可以使用33f33.0f
  • you 会采取哪些步骤来汇总未知大小集合中的一堆值?是的,“for”或“loop”听起来很合适 - 搜索它。
  • 我不认为这个问题是真正的重复。这是更具体的。 java 8 中的解决方案是 map.values().stream().mapToDouble(Double::doubleValue).sum()

标签: java collections hashmap


【解决方案1】:

如果您需要在Map 中添加所有值,试试这个:

float sum = 0.0f;
for (float f : map.values()) {
    sum += f;
}

最后,sum 变量将包含答案。所以是的,为了遍历 Map 的值,最好使用 for 循环。

【讨论】:

  • 你打败了我! +1
  • 非常感谢您的宝贵时间,它有效,我得到了我想要的结果!!
  • 在 java 8 中你可以做 map.values().stream().sum()
【解决方案2】:
Float sum = 0f;
for (Float val : map.values()){
    sum += val;
}

//sum now contains the sum!

for 循环确实可以很好地达到预期目的,尽管您也可以使用 while 循环和迭代器...

【讨论】:

  • 非常感谢您的宝贵时间!
【解决方案3】:

您绝对可以使用for-loop 做到这一点。您可以使用条目集:

for (Entry<String, Float> entry : map.entrySet()) {
    sum += entry.getValue();
}

或者在这种情况下只是:

for (float value : map.values()) {
    sum += value;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多