Ich brauche oft eine Liste von Objekten und gruppiere sie in einer Map basierend auf einem Wert, der im Objekt enthalten ist. Z.B. Nimm eine Liste von Nutzern und Gruppen nach Ländern.Verknüpfung zum Hinzufügen zur Liste in einer HashMap
Mein Code für diese sieht in der Regel wie:
Map<String, List<User>> usersByCountry = new HashMap<String, List<User>>();
for(User user : listOfUsers) {
if(usersByCountry.containsKey(user.getCountry())) {
//Add to existing list
usersByCountry.get(user.getCountry()).add(user);
} else {
//Create new list
List<User> users = new ArrayList<User>(1);
users.add(user);
usersByCountry.put(user.getCountry(), users);
}
}
aber ich kann nicht umhin zu denken, dass dies umständlich ist und einige Guru haben einen besseren Ansatz. Die nächste, die ich bis jetzt sehen kann, ist die MultiMap from Google Collections.
Gibt es Standardansätze?
Danke!
Sollte das wirklich "Map>'? Die Antwort macht einen Unterschied für das, was Sie bauen oder verwenden möchten. Beachten Sie, dass Google Collections Verfeinerungen für die geschachtelten Auflistungen verschiedener Arten von Listen und Gruppen bietet. –
seh
Lassen Sie Java einfach für .Net und Linq fallen. –
@Hamish: Ja, wegen unserer Sorgen über Abhängigkeiten sind dann total irrelevant! – Carl