Мне часто приходится брать список объектов и группировать их в Map на основе значения, содержащегося в объекте. Например. возьмите список пользователей и группу по странам.
Мой код для этого обычно выглядит следующим образом:
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);
}
}
Однако я не могу не думать о том, что это неудобно, и у какого-то гуру есть лучший подход. Самое близкое, что я вижу до сих пор, это MultiMap из Коллекций Google.
Существуют ли какие-либо стандартные подходы?
Спасибо!