如何在列表流中找到Map中的重复值?

时间:2018-10-02 08:02:10

标签: 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,但我听不懂。

2 个答案:

答案 0 :(得分:3)

霍尔格在评论中提出了我错过的观点。如果您的SparseTensorValue(indices=array([[3, 4], [4, 5], [6, 2]]), values=array([1, 1, 1], dtype=int32), dense_shape=array([10, 8])) 仅包含那些Mapname属性中的 ,则只需执行以下操作:

age

这就足够了。另一方面,如果您具有更多属性,并且 仅过滤其中的一部分,您可以使用this utility

fileDataList.stream()
            .distinct()
            .collect(Collectors.toList())

答案 1 :(得分:0)

如果MapEntrySet列表中,则可以将您的列表转移。

List<Map.Entry<String, String>> entries = fileDataList.stream()
                .flatMap(e -> e.entrySet().stream())
                .collect(toList());