2014-10-04 24 views
7

Yuvalanmış bir HashMap üzerinden yineleme hakkında nasıl giderim?Yuvalanmış hashmap ile yineleme

HashMap böyle kurulum: Student değişken name ihtiva eden bir amacı,

HashMap<String, HashMap<String, Student>> 

. Örneğin benim HashMap

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

nasıl sonra her tek harf tuşları, tüm boyunca yineleme olabilir (aşağıdaki o HashMap içeriği ne olabilir simüle etmek sadece, benim kodu değil) böyle görünüyordu Eğer Tam ad anahtarı, daha sonra öğrencinin adını çekin?

cevap

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

Mükemmel ve en iyi kod HashMaps ait HashMaps geçme için. Teşekkürler Brett – vkrams

8

Java 8 lambda'lar ve Map.forEachbkail's answer daha özlü olun:

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