我有一个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]
任何人都可以帮我吗?
谢谢!
凯文
答案 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
}