问题描述
您可能做错了…
首先,HashMap无法存储整数,它需要适当的对象-如整数-数组是一个对象,尽管它隐藏在某些语法糖的后面。
如果它们恰好具有相同的大小,这是循环遍历这两个地图的方法,我想这就是您的意思。
Iterator<int[]> expenses = val1.values().iterator();
Iterator<Integer> people = val2.values().iterator();
assert val1.size() == val2.size() : " size mismatch";
while (expenses.hasNext()) {
int[] expensesPerMonth = expenses.next();
int persons = people.next();
// do strange calculation
int strangeSum = 0;
for (int idx = 0; idx < expensesPerMonth.length; idx++) {
strangeSum += persons * expensesPerMonth[idx];
}
System.out.println("strange sum :" + strangeSum);
}
但是您可能应该回过头来重新考虑如何存储数据–为什么要使用地图,关键是什么?
例如,创建一个代表每月支出和人数的组合的对象会更好吗?
解决方法
我有两个哈希图
LinkedHashMap<String,int[]> val1 = new LinkedHashMap<String,int[]>();
LinkedHashMap<String,int> val2 = new LinkedHashMap<String,int>();
每个哈希图都有不同的键和值。我试图同时遍历两个哈希图,并乘以每个值val1->int[] to val2->int
最简单快捷的方法是什么?我在两个哈希图中都有数千个值。
谢谢