java:两个list集合存储对象,其中一个list的对象中有一个数据对应另一个list的数据,如何根据这样的一个数据使用lambda将两个list组合成一个list
时间: 2024-05-05 20:20:25 浏览: 196
可以使用Java 8中的Stream API来解决这个问题。具体代码如下所示:
```
List<FirstObject> firstList = ...; // 第一个list
List<SecondObject> secondList = ...; // 第二个list
List<ResultObject> result = firstList.stream()
.filter(firstObj -> {
// 过滤出有对应数据的对象
return secondList.stream()
.anyMatch(secondObj -> secondObj.getData().equals(firstObj.getCorrespondingData()));
})
.map(firstObj -> {
// 将两个对象组合成一个新的对象
SecondObject secondObj = secondList.stream()
.filter(s -> s.getData().equals(firstObj.getCorrespondingData()))
.findFirst()
.orElse(null);
return new ResultObject(firstObj, secondObj);
})
.collect(Collectors.toList());
```
其中,`FirstObject`和`SecondObject`分别是第一个list和第二个list中的对象类型,`ResultObject`是将两者组合后的新对象类型。
这段代码中,首先使用`filter`方法过滤出有对应数据的对象,并使用`map`方法将两个对象组合成一个新的对象。最后,使用`collect`方法将所有新对象收集到一个list中并返回。
阅读全文