Java LinkedHashMap迭代

问题描述

您可能做错了…

首先,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

最简单快捷的方法是什么?我在两个哈希图中都有数千个值。

谢谢