java-8 - 如何在列表流中查找 Map 中的重复值?

标签 java-8

假设我有这个数组列表:

 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 这些 nameage 属性,您可以简单地执行以下操作:

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/

相关文章:

java - 从存在于 arraylist 中的 hashmap 中消除空键

java 8元字符的正则表达式

java - 如何使JavaFX服务中的任务不断接受参数?

java - 过滤 Stream 中的 Null 项目

java - 使用 java.util.Base64 编码和解码字符串

Java 8 - 从 Collection.stream.map() 调用多参数方法

java - 如何在 Java 8 中返回二维数组?

java-8 - 不兼容的类型 : Predicate<CAP#1> cannot be converted to Predicate<? super CAP#2>

Java8 : Collect min, 从列表到 map 的最大值和平均值

java - 如何按包含的枚举对对象列表进行排序?