我經常需要獲取對象列表,並根據對象中包含的值將它們組合到一個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