获取在另一个地图(JAVA)中使用的Map的键和值

时间:2013-11-09 15:16:42

标签: java map hashmap

我在另一个地图中使用地图,外部地图的键是Integer,值是另一个Map。我得到了预期的值,但我不知道如何获得内部地图的关键和价值。 这是代码

Map<Integer, Map<Integer, Integer>> cellsMap = new HashMap<Integer, Map<Integer, Integer>>();
Map<Integer , Integer> bandForCell = cellsMap.get(band_number);
    if (bandForCell == null) 
        bandForCell = new HashMap<Integer, Integer>();
    bandForCell.put(erfcn, cell_found);
    cellsMap.put(band_number, bandForCell);

  csv.writeCells((Map<Integer, Map<Integer, Integer>>) cellsMap);

public void writeCells (Map<Integer, Map<Integer, Integer>> cellsMap ) throws IOException
{
    for (Map.Entry<Integer, Map<Integer, Integer>> entry : cellsMap.entrySet()) {
        System.out.println("Key: " + entry.getKey() + ". Value: " + entry.getValue() + "\n");
    }           
}

输出我的地图

Key: 20 Value: {6331=0, 6330=1, 6329=1, 6328=0, 6335=1, 6437=0, 6436=1}

上述输出中的值是另一个地图。 如何从外部地图的值中获取内部地图的键和值?

像内图的键= 6331,6330,6329 .... 和内部地图的值= 0,1,1,0 ......

由于

2 个答案:

答案 0 :(得分:2)

这对我有用,希望将来会帮助其他人

 for (Map.Entry<Integer, Map<Integer, Integer>> outer : cellsMap.entrySet()) {
    System.out.println("Key: " + outer.getKey() +  "\n");
    for (Map.Entry<Integer, Integer> inner : entry.getValue().entrySet()) {
        System.out.println("Key = " + inner.getKey() + ", Value = " + inner.getValue());
    }
 }  

答案 1 :(得分:0)

为了获得对内部地图的引用,您只需使用cellsMap.get(key)。我不确定你想要做什么,但是,例如,如果你想获得第一个键为i且第二个键为j的值,你可以使用它cellsMap.get(i).get(j)

或者,如果您想在索引i打印出内部地图的所有键和值,您可以使用

for (Map.Entry> entry : cellsMap.get(i).entrySet()) {
        System.out.println("Key: " + entry.getKey() + ". Value: " + entry.getValue() + "\n");
    }