我经常需要获取对象列表,并根据对象中包含的值将它们组合到一个Map中。例如。按国家列出用户和组。在HashMap中添加列表的快捷方式
我给这家代码通常是这样的:
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 from Google Collections。
是否有任何标准方法?
谢谢!
应该就是真的是'Map>'?答案对您选择构建或使用的内容有所影响。请注意,Google Collections为各种类型的列表和集合提供了嵌套集合的细化。 –
seh
2010-06-11 00:04:12
只需放弃.Net和Linq的Java。 – 2010-06-11 00:11:10
@Hamish:是的,因为我们担心依赖关系是完全不相关的! – Carl 2010-06-11 01:20:22