而是與ArrayList
自己的煩心事,我會建議使用一個已經存在的類型與設計用於多值:Guavas Multimap之(explanation; JavaDoc)。
而不是做這個的:
Map<String, ArrayList<String>> crazyMap = new HashMap<>();
crazyMap.put("myCompany", new ArrayList<>(Arrays.asList("Monday")));
你可以這樣做:
Multimap<String, String> crazyMap = ArrayListMultimap.create();
crazyMap.put("myCompany", "Monday");
這也避免了像醜陋的東西:
ArrayList<String> items;
if (crazyMap.containsKey("myCompany")) {
items = crazyMap.get("myCompany");
} else {
items = new ArrayList<>();
}
items.add("Tuesday");
crazyMap.put("myCompany", items);
番石榴在乎你創建集合,如果它不存在。請致電:
crazyMap.put("myCompany", "Tuesday");
並且一切都完成了。
一個缺點是,使用的接口是MultiMap
,它不延伸Map
。這意味着你要 「弱化」 變量類型MultiMap
,如:
public void someMethod(MultiMap<K, V> multimap)
代替:
public void someMethod(Map<K, Collection<V>> multiMap)
瞭解更多關於這裏的區別:"Multimap Is Not A Map"。
你可以在maven repository找到最新版本的番石榴。
來源
2015-10-11 00:46:11
Tom
創建一個ArrayList,將字符串添加到它,將列表添加到地圖。 –