如何防止LinkedHashMap替换Key/Value?
How to prevent LinkedHashMap from replacing Key/Value?
假设我有一个 LinkedHashMap<Integer,Point2D.Double>
,我给它放了一个键和一个值,比如 .put(2,new Point2D.Double(34,32));
我的问题是有时我需要在其中放入一个已经存在的键和一个值,然后 LinkedHashMap
替换它。
比如,我已经有了键2
和值Point2D.Double(34,32)
,我需要再添加一次。
为什么要通过将 key/value 添加到地图来替换它,有没有办法解决这个问题(也许通过另一种地图)?
如果 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)
假设我有一个 LinkedHashMap<Integer,Point2D.Double>
,我给它放了一个键和一个值,比如 .put(2,new Point2D.Double(34,32));
我的问题是有时我需要在其中放入一个已经存在的键和一个值,然后 LinkedHashMap
替换它。
比如,我已经有了键2
和值Point2D.Double(34,32)
,我需要再添加一次。
为什么要通过将 key/value 添加到地图来替换它,有没有办法解决这个问题(也许通过另一种地图)?
如果 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)