如何在java hashmap中相乘所有的值和键

  • 本文关键字:java hashmap java hashmap
  • 更新时间 :
  • 英文 :


我正在寻找一种方法在java hashmap中相乘所有值和所有键。

在这种情况下,我有一个包含这些值的哈希映射

{1:3, 2:2}

我想将所有键相乘(在本例中为1*2)在我想把所有的值相乘并放入另一个变量之后。

如何在java中做到这一点?

您可以流式传输键/值,并使用reduce方法将键/值相乘

Map<Integer, Integer> map = new HashMap<>(); // the same logic will work for Long type, you need to change other variable types
final Integer multipliedKeysValue = map.keySet().stream().reduce(1, (a, b) -> a * b);
final Integer multipliedValuesValue = map.values().stream().reduce(1, (a, b) -> a * b);

阅读更多:

  • Java流减少

你可以通过使用循环(假设你的地图是在map变量)来实现这一点:

long keysProduct = 1;
long valuesProduct = 1;
for (var entry : map.entrySet()) {
keysProduct *= entry.getKey();
valuesProduct *= entry.getValue();
}

map.entrySet()将从映射中返回键值对,因此您可以遍历它们并将键和值的乘积存储在相应的变量中。

注:请注意,var从Java 10开始可用,如果您使用Java 9或更早的版本,请考虑将其替换为Map.Entry<Integer, Integer>!

最新更新