2014-10-04 33 views
7

Wie würde ich über eine verschachtelte HashMap iterieren gehen?Iterate durch verschachtelte hashmap

Die HashMap ist Setup wie folgt aus:

HashMap<String, HashMap<String, Student>> 

Wo Student ist ein Objekt eine Variable name enthält. Wenn zum Beispiel sahen meine HashMap wie folgt (die folgende ist nicht mein Code, es ist nur zu simulieren, was der Inhalt des hashmap sein könnte)

hm => HashMap<'S', Hashmap<'Sam', SamStudent>> 
     HashMap<'S', Hashmap<'Seb', SebStudent>> 
     HashMap<'T', Hashmap<'Thomas', ThomasStudent>> 

Wie kann ich durch all die einzelnen Buchstabentasten durchlaufen, dann wird jeder vollständiger Name Schlüssel, dann den Namen des Studenten herausziehen?

Antwort

11
for (Map.Entry<String, HashMap<String, Student>> letterEntry : students.entrySet()) { 
    String letter = letterEntry.getKey(); 
    // ... 
    for (Map.Entry<String, Student> nameEntry : letterEntry.getValue().entrySet()) { 
     String name = nameEntry.getKey(); 
     Student student = nameEntry.getValue(); 
     // ... 
    } 
} 
+0

perfekten und besten Code für HashMaps von HashMaps überquert. Danke, Brett – vkrams

8

Java 8 lambdas und Map.forEach machen bkail's answer prägnante:

outerMap.forEach((letter, nestedMap) -> { 
    //... 
    nestedMap.forEach((name, student) -> { 
     //... 
    }); 
    //... 
});