2014-10-04 157 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) -> { 
     //... 
    }); 
    //... 
});