循环嵌套地图 - 双重结果

时间:2014-06-19 12:47:35

标签: java nested

我是Java的新手,并尝试了解嵌套地图,确切地说我可以如何从循环中过滤掉不必要的结果。

Map<String,Map<Integer,Integer>> add = new LinkedHashMap<>();
Map<Integer,Integer> add2 = new LinkedHashMap<>();

for(Map.Entry<String,Map<Integer,Integer>> view: add.entrySet()){
    System.out.println("Name: " + view.getKey());

    for(Map.Entry<Integer,Integer>view2: add2.entrySet()){
        System.out.println("Number: "+ view2.getKey());
        System.out.println("ID:"+ view2.getValue());
        System.out.println("==================");
    }
}

结果:Name1,1234和Name2,2345 是:

Name: Name1
Number: 1234
ID:1
Number: 2345
ID:2 
====================
Name: Name2
Number: 1234
ID:1 
Number: 2345
ID:2 

我只想要结果:名字1,数字1,ID1没有Number2和ID2在第一个循环... 或者如何在没有双号和ID的情况下迭代它?

- &GT; 当我输入3个名字,每个名字有3个数字时,第一个我得到:

Name: name1

Number: 111
ID:1
===============
Number: 2222
ID:2
===============
Number: 3333
ID:3
===============

和其他人一样

Name: name2

    Number: 111
    ID:1
    ===============
    Number: 2222
    ID:2
    ===============
    Number: 3333
    ID:3
    ===============

应该只是

Name 1
Number: 111
ID:1
============

Name 2
Number: 222
ID:2
============

Name 3
Number: 333
ID:3

2 个答案:

答案 0 :(得分:0)

这是迭代嵌套Map

的方法
Map<String,Map<Integer,Integer>> add = new LinkedHashMap<>();
for(String key : add.keySet()) {
    for(Integer key : add.get(key).keySet()) {
        // your code here
    }
}

您错过了代码中的add.get(key).keySet()部分。

答案 1 :(得分:0)

了解迭代嵌套地图,请阅读此A better way to iterate java maps

您可以使用 Map.keySet() 方法迭代地图中的键。 同时浏览this链接。