我试过如下:
for (Object[] trials: trialSpecs) {
Object[] result= (Object[]) trials;
multiValueMap.put((Integer) result[0], new ArrayList<Integer>());
multiValueMap.get(result[0]).add((Integer)result[1]);
}
但每次用旧值替换新值时。我知道这是因为我在代码中使用了new ArrayList<Integer>
。
但是我无法替换这个区块。
答案 0 :(得分:5)
只有put
一个new ArrayList()
(如果还不存在):
for (Object[] trials: trialSpecs) {
Object[] result= (Object[]) trials;
//Check to see if the key is already in the map:
if(!multiValueMap.containsKey((Integer) result[0]){
multiValueMap.put((Integer) result[0], new ArrayList());
}
multiValueMap.get(result[0]).add((Integer)result[1]);
}
答案 1 :(得分:3)
像Guava和Apache这样的Java库提出了完全符合这一目标的Multimap:
使用guava:
Multimap<String, String> mhm = ArrayListMultimap.create();
mhm.put(key, "A");
mhm.put(key, "B");
mhm.put(key, "C");
Collection<String> coll = mhm.get(key);
使用apache:
MultiMap mhm = new MultiHashMap();
mhm.put(key, "A");
mhm.put(key, "B");
mhm.put(key, "C");
Collection coll = (Collection) mhm.get(key);