使用stream流将两个list<Map<String,Object>>中Map里面的一个元素进行对比,拿到相同元素中的其他元素
时间: 2024-05-08 19:16:19 浏览: 63
List<Bean>转换为List<Map>
假设我们有两个List<Map<String,Object>>,分别为list1和list2,我们要比较它们中Map里面key为"name"的元素,并获取这些元素中key为"age"的值相同的Map。
可以使用stream流进行操作,具体代码如下:
```
List<Map<String,Object>> result = list1.stream()
.filter(map1 -> list2.stream()
.map(map2 -> map2.get("name"))
.anyMatch(name -> name.equals(map1.get("name"))))
.filter(map1 -> list2.stream()
.filter(map2 -> map2.get("name").equals(map1.get("name")))
.anyMatch(map2 -> map2.get("age").equals(map1.get("age"))))
.collect(Collectors.toList());
```
上述代码中,我们首先使用filter方法过滤出list1中的Map,其中Map的"name"元素在list2中也存在。然后再次使用filter方法,过滤出那些"name"和"age"元素都相同的Map。最后使用collect方法将符合条件的Map收集到一个新的List中。
需要注意的是,上述代码假设"name"和"age"元素的值都是可以相互比较的,如果值的类型不同或者无法比较,需要根据实际情况进行修改。
阅读全文