简体   繁体   中英

Loop Nested Maps - Double result

I am new in Java, and trying to understand Nested Maps, exactly how I can filter unnecessary result from loop.

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("==================");
    }
}

The result with:Name1,1234 and Name2,2345 is:

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

I want only result for: name 1, number 1, ID1 without Number2 and ID2 on first loop... Or how to iterate this without double number and ID?

--> When i put 3 Names, with 3 numbers for each one name, for the first One i get:

Name: name1

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

and for others is the same

Name: name2

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

should be just

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

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

Name 3
Number: 333
ID:3

This is how you iterate over a nested Map :

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

You missed the add.get(key).keySet() part in your code.

to know about iterating nested map read this A better way to iterate java maps

You can iterate over the keys in a map using the Map.keySet() method. Also go through this link.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM