从 Java 中的列表中过滤对象类型的重复项
Filter duplicates of type Object from List in Java
我得到了一个 LinkedHashMap,它在输出中有一些重复项。
地图看起来像这样:
Map<Object, List<Object>> myMap= new LinkedHashMap<Object, List<Object>>();
当我对这张地图进行系统输出时,结果如下所示:
Test.example.id = [Source.table1.id, Source.table2.id],
Test.example.name = [Source.table1.name, Source.table1.name]
现在我想过滤掉记录中的所有重复项,因此输出为:
Test.example.id = [Source.table1.id, Source.table2.id],
Test.example.name = [Source.table1.name]
谁能帮我解决这个问题?
谢谢!
凯文
使用 Java 8,你可以这样做(它会修改地图):
myMap.replaceAll((k, v) -> v.stream().distinct().collect(toList()));
否则,您必须手动迭代这些值,将它们放入 Set
以获得不同的 属性,然后将它们放回地图中。
for(Map.Entry<Object, List<Object>> entry : myMap.entrySet()) {
myMap.put(entry.getKey(), new ArrayList<>(new HashSet<>(entry.getValue()))); //you can use a new map if you want to keep the original one
}
我得到了一个 LinkedHashMap,它在输出中有一些重复项。 地图看起来像这样:
Map<Object, List<Object>> myMap= new LinkedHashMap<Object, List<Object>>();
当我对这张地图进行系统输出时,结果如下所示:
Test.example.id = [Source.table1.id, Source.table2.id],
Test.example.name = [Source.table1.name, Source.table1.name]
现在我想过滤掉记录中的所有重复项,因此输出为:
Test.example.id = [Source.table1.id, Source.table2.id],
Test.example.name = [Source.table1.name]
谁能帮我解决这个问题?
谢谢!
凯文
使用 Java 8,你可以这样做(它会修改地图):
myMap.replaceAll((k, v) -> v.stream().distinct().collect(toList()));
否则,您必须手动迭代这些值,将它们放入 Set
以获得不同的 属性,然后将它们放回地图中。
for(Map.Entry<Object, List<Object>> entry : myMap.entrySet()) {
myMap.put(entry.getKey(), new ArrayList<>(new HashSet<>(entry.getValue()))); //you can use a new map if you want to keep the original one
}