2014-10-04 3 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 из HashMaps. Благодаря Бретту – vkrams

8

Java 8 лямбды и Map.forEach сделать bkail's answer более кратким:

outerMap.forEach((letter, nestedMap) -> { 
    //... 
    nestedMap.forEach((name, student) -> { 
     //... 
    }); 
    //... 
}); 
Смежные вопросы