Konvertiert die Informationen von Präfekturen in der Datenbank in eine Karte mit einer Liste von Namen als Wert, wobei die Kategorie als Schlüssel verwendet wird. (Ich weiß nicht, ob ich es auf Japanisch schreibe, aber kurz gesagt, ich möchte List \ <SampleEntity > in Map \ <String, List \ <String > > konvertieren.)
category | name |
---|---|
Hokkaido | Hokkaido |
Tohoku Region | Präfektur Aomori |
Tohoku Region | Präfektur Iwate |
Tohoku Region | Präfektur Miyagi |
Tohoku Region | Akita |
Tohoku Region | Präfektur Yamagata |
Tohoku Region | Präfektur Fukushima |
Kanto Region | Präfektur Ibaraki |
Kanto Region | Präfektur Tochigi |
Kanto Region | Präfektur Gunma |
Kanto Region | Saitama |
Kanto Region | Präfektur Chiba |
Kanto Region | Tokio |
Kanto Region | Präfektur Kanagawa |
Wenn Sie versuchen, dies normal zu tun, ist dies problematisch, da Sie zwischen dem ersten Mal (wenn die Liste nicht vorhanden ist) und dem zweiten und den folgenden Zeitpunkt (wenn die Liste vorhanden ist) verzweigen müssen ...
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());
}
Mit LazyMap können Sie so ordentlich schreiben. Die Deklaration ist chaotisch, aber die Logik ist einfacher.
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);
/* ===Ausgabeergebnis===
* {Hokkaido=[Hokkaido],
*Tohoku Region=[Präfektur Aomori,Präfektur Iwate,Präfektur Miyagi,Akita,Präfektur Yamagata,Präfektur Fukushima],
*Kanto Region=[Präfektur Ibaraki,Präfektur Tochigi,Präfektur Gunma,Saitama,Präfektur Chiba,Tokio,Präfektur Kanagawa]}
*/
Recommended Posts