从Java中的List中过滤Object类型的重复项

时间:2015-03-03 10:25:21

标签: java dictionary filter duplicates linkedhashmap

我有一个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]

任何人都可以帮我吗?

谢谢!

凯文

1 个答案:

答案 0 :(得分:1)

使用Java 8,你可以这样做(它可以修改地图):

myMap.replaceAll((k, v) -> v.stream().distinct().collect(toList()));

否则,您必须手动迭代这些值,将它们放入Set以获取distinct属性,然后将它们放回到地图中。

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
}