无法在散列映射中迭代2个散列图

时间:2014-05-12 13:03:54

标签: java collections

我不能迭代这个结构(Java):

HashMap<HashMap<Integer, Integer>, HashMap<Integer, Integer>> last
    = new HashMap<HashMap<Integer, Integer>, HashMap<Integer, Integer>>();

这些是我在第一个中添加的2个HashMaps:

HashMap<Integer, Integer> arrival = new HashMap<Integer, Integer>();
HashMap<Integer, Integer> departure = new HashMap<Integer, Integer>();

尝试了各种循环,阅读了几篇文章,但直到现在我都无法连接点以使其正确。

我希望例如能够在循环中一起从HashMap中的两个HashMaps获取/打印四个整数值。

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,我认为在另一个HashMap中将key作为HashMap并不是一个好主意。看起来您正在表示键值对(到达/目的地?)的地图,您最好为此创建一个类并将该类添加到HashMap。使用您当前的结构将导致更多的混乱而不是好处。

那就是说, 可以循环使用它。

循环HashMap的一种方法是循环访问其入口集。因此,如果hHashMap<Integer, Integer>,则循环为:

for(Map.Entry<Integer, Integer> entry : h.entrySet)
{
...
}

因此,对于名为HashMap<HashMap<Integer, Integer>, HashMap<Integer, Integer>>

last
for(Map.Entry<HashMap<Integer, Integer>, HashMap<Integer, Integer>> entry : last.entrySet())
{
    HashMap<Integer, Integer> key = entry.getKey();
    for(Map.Entry<Integer, Integer> keyMapEntry : key.entrySet())
    {
        //Loop through the value HashMap. 
        //keyMapEntry.getKey() gives the key of the Hashmap that is the key in the 
        //original Hashmap, keyMapEntry.getValue() gives the value
    }

    HashMap<Integer, Integer> value = entry.getValue();
    for(Map.Entry<Integer, Integer> valueMapEntry : value.entrySet())
    {
        //Loop through the key HashMap
        //valueMapEntry.getKey() gives the key of the Hashmap that is the value in the 
        //original Hashmap, valueMapEntry.getValue() gives the value
    }
}