假设我有这个数组列表:
List<Map<String,String>> fileDataList= new ArrayList<>();
fileDataList.stream().forEach(t->{
//find duplicate map values
});
该列表可能包含像这样的重复值:
[
{age:12,name:"john"},
{age:11,name:"Mary"},
{age:12,name:"john"}
]
现在,我想在流中找到匹配名称和年龄的重复映射值而不删除它们。 我尝试使用 HashSet,但我无法理解。
最佳答案
Holger 在评论中提出了我忽略的一点。如果您的 Map
包含 only 这些 name
和 age
属性,您可以简单地执行以下操作:
fileDataList.stream()
.distinct()
.collect(Collectors.toList())
这就足够了。如果,另一方面,你有更多的属性(property)和 what to filter by them only some, you could use this utility :
fileDataList.stream()
.filter(distinctByKey(x -> Arrays.asList(x.get("name"), x.get("age")))
.collect(Collectors.toList());
关于java-8 - 如何在列表流中查找 Map 中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52604240/