Convertit les informations des préfectures de la base de données en une carte avec une liste de noms comme valeur, en utilisant la catégorie comme clé. (Je ne sais pas si je l'écris en japonais, mais en bref, je veux convertir List \ <SampleEntity > en Map \ <String, List \ <String > >)
category | name |
---|---|
Hokkaido | Hokkaido |
Région de Tohoku | Préfecture d'Aomori |
Région de Tohoku | Préfecture d'Iwate |
Région de Tohoku | Préfecture de Miyagi |
Région de Tohoku | Akita |
Région de Tohoku | Préfecture de Yamagata |
Région de Tohoku | Préfecture de Fukushima |
Région de Kanto | Préfecture d'Ibaraki |
Région de Kanto | Préfecture de Tochigi |
Région de Kanto | Préfecture de Gunma |
Région de Kanto | Saitama |
Région de Kanto | Préfecture de Chiba |
Région de Kanto | Tokyo |
Région de Kanto | Préfecture de Kanagawa |
Si vous essayez de le faire normalement, c'est gênant car vous devez brancher entre la première fois (lorsque la liste n'existe pas) et la seconde et les suivantes (lorsque la liste existe) ...
python
Map<String, List<String>> map = new HashMap<String, List<String>>();
for (SampleEntity en : entityList) {
if (!map.containsKey(en.getCategory()) {
map.put(en.getCategory(), new ArrayList<String>());
}
map.get(en.getCategory()).add(en.getName());
}
Avec LazyMap, vous pouvez écrire si proprement. La déclaration est désordonnée, mais la logique est plus simple.
python
Map<String, List<String>> map = MapUtils.lazyMap(new HashMap<String, List<String>>(),
InstantiateFactory.instantiateFactory(ArrayList.class, null, null));
for (SampleEntity en : entityList) {
map.get(en.getCategory()).add(en.getName());
}
System.out.println(map);
/* ===Résultat de sortie===
* {Hokkaido=[Hokkaido],
*Région de Tohoku=[Préfecture d'Aomori,Préfecture d'Iwate,Préfecture de Miyagi,Akita,Préfecture de Yamagata,Préfecture de Fukushima],
*Région de Kanto=[Préfecture d'Ibaraki,Préfecture de Tochigi,Préfecture de Gunma,Saitama,Préfecture de Chiba,Tokyo,Préfecture de Kanagawa]}
*/
Recommended Posts