我正在寻找一种方法在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>
!