2014-10-04 194 views
7

我將如何去通過嵌套HashMap迭代?通過嵌套HashMap迭代

HashMap是設置這樣的:

HashMap<String, HashMap<String, Student>> 

哪裏Student是包含可變name的對象。例如如果我的HashMap這個樣子(下面是不是我的代碼,它只是模擬HashMap中的內容可能是什麼)

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

我怎麼能在所有的單字母鍵的迭代然後每個全名鍵,然後拔出學生的名字?

回答

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

完美和最好的代碼用於遍歷HashMaps這樣的包含HashMap。謝謝佈雷特 – vkrams 2017-03-11 23:59:50

8

的Java 8個Lambda表達式和Map.forEach使bkail's answer更簡潔:

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