如何防止LinkedHashMap替换Key / Value?

时间:2017-02-09 10:11:24

标签: java linkedhashmap

假设我有一个LinkedHashMap<Integer,Point2D.Double>,我为其添加了一个键和一个值,例如.put(2,new Point2D.Double(34,32));

我的问题是,有时我需要在其中放置一个已存在的密钥和值,LinkedHashMap将替换它。

就像,我已经拥有密钥2和值Point2D.Double(34,32),我需要再次添加密钥。

为什么要通过将相同的值添加到地图来替换该键/值,是否有办法解决此问题(可能通过其他类型的地图)?

1 个答案:

答案 0 :(得分:1)

如果Point的顺序不重要,请将您的hashmap初始化为:

HashMap<Integer,HashSet<Point2D.Double>> hashmap = new HashMap<Integer,HashSet<Point2D.Double>>();

而不是使用

hashmap.put(1,new Point2D.Double(34,32));

使用以下代码:

if(hashmap.get(key) == null){
  value = new HashSet<Point2D.Double>();
}else{
  value = hashmap.get(key);
}
value.add(point_to_add);
hashmap.put(key,value);

如果插入点的顺序很重要,请使用(Array-)List而不是hashSet

<强> 修改

AS GPI提到:使用JAVA 8你也可以这样做:

map.computeIfAbsent(key, k -> new HashSet<>()).add(value)