map.put("a", "bla");
map.put("a", "blu");
map.get("a") will return only "blu".
If I want map.get("a") to return ("bla", "blu") I must use a MultiValueMap to decorate a ConcurrentHashMap
or you can use a Google Collections (Guava) Multimap such as a ArrayListMultimap
Otherwise, if like me you like brewing your own framework, you can decorate yourself a ConcurrentHashmap:
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.xmlbeans.XmlObject;
public class ArrayListMultimap {
private ConcurrentHashMap<String, List> theMap = new ConcurrentHashMap<String, List<XmlObject>>();
public static ArrayListMultimap create(int i, int j) {
return new ArrayListMultimap();
}
public List<XmlObject> put(String key, XmlObject value) {
List<XmlObject> previousvalue = (List<XmlObject>)theMap.get(key);
if (previousvalue == null) {
previousvalue = new ArrayList<XmlObject>();
previousvalue.add(value);
theMap.put(key, previousvalue);
}
return previousvalue;
}
public int size() {
return theMap.size();
}
}
No comments:
Post a Comment