迭代嵌套的hashmap

jsa*_*san 12 java hashmap

我将如何迭代嵌套的HashMap?

HashMap是设置这样的:

HashMap<String, HashMap<String, Student>>
Run Code Online (Sandbox Code Playgroud)

Student包含变量的对象在哪里name.例如,如果我的HashMap看起来像这样(以下不是我的代码,它只是模拟hashmap的内容可能是什么)

 hm => HashMap<'S', Hashmap<'Sam', SamStudent>>
       HashMap<'S', Hashmap<'Seb', SebStudent>>
       HashMap<'T', Hashmap<'Thomas', ThomasStudent>>
Run Code Online (Sandbox Code Playgroud)

我怎么能遍历所有的单个字母键,然后是每个全名键,然后拿出学生的名字?

Bre*_*ail 21

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();
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)


Jef*_*oom 13

Java 8 lambdas Map.forEach并使bkail的答案更简洁:

outerMap.forEach((letter, nestedMap) -> {
    //...
    nestedMap.forEach((name, student) -> {
        //...
    });
    //...
});
Run Code Online (Sandbox Code Playgroud)