从 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
}