Have a
List<Map<String, Object>> allPoints = new LinkedList<>();
每个地图包含一个"name"
带有字符串值的键;
需要创建一个
List<Map<String, Object>> expectedPoints
列表中有重复的名字;对于这些,只想保留最后一个。
例如。如果列表包含三个项目,并且第一个和第三个项目都具有值为“abc”的“name”,则结果列表应仅包含原始列表中的第二个和第三个项目。
一种方法是使用辅助地图:
Map<String, Map<String, Object>> map = new LinkedHashMap<>(allPoints.size(), 0.75f, true);
allPoints.forEach(point -> map.put((String)point.get("name"), point));
List<Map<String, Object>> expectedPoints = new ArrayList<>(map.values());
这有效是因为Map.put
要么将新条目添加到地图中,要么用新条目覆盖现有条目的值,从而仅保留与名称关联的最后一个点。
我正在创建一个访问顺序 LinkedHashMap
通过使用其重载构造函数 https://docs.oracle.com/javase/9/docs/api/java/util/LinkedHashMap.html#LinkedHashMap-int-float-boolean-。这是为了保持与中相同的顺序allPoints
list.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)