按照stream流过滤两个list<JsonObject>集合中的两个字段相同的数据的并集
时间: 2024-03-05 15:55:08 浏览: 60
可以使用Java 8的Stream API来解决这个问题。假设我们有两个名为list1和list2的List<JsonObject>集合,每个JsonObject对象都有两个字段name和age。我们想要找出这两个集合中name和age字段相同的数据的并集,可以按照以下步骤操作:
1. 将两个List<JsonObject>集合合并为一个List<JsonObject>集合,可以使用Stream的concat方法。
```
List<JsonObject> combinedList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList());
```
2. 使用Stream的filter方法过滤出name和age字段相同的数据。
```
List<JsonObject> filteredList = combinedList.stream()
.filter(obj -> list1.contains(obj) && list2.contains(obj))
.collect(Collectors.toList());
```
3. 将过滤后的List<JsonObject>集合转换为Set<JsonObject>集合,以去除重复数据。
```
Set<JsonObject> resultSet = new HashSet<>(filteredList);
```
完整代码如下:
```
List<JsonObject> combinedList = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList());
Set<JsonObject> resultSet = combinedList.stream()
.filter(obj -> list1.contains(obj) && list2.contains(obj))
.collect(Collectors.toSet());
```
阅读全文