此问题已经在这里有了答案:
我有两个类型为Customer的列表。我正在比较两个列表。我想使用Java流来实现这一点。请帮助。
Customer{
String Name,
String owner,
}
List<object> newList = new ArrayList<>();
for(Object ob1: list1) {
for(Object ob2: list2) {
if(ob1.getName().equals(ob2.getName())) {
ob1.setOwner(ob2.getOwner());
newList.add(ob1);
}
}
}
您可以这样做:
list1.stream().map(ob1 -> {
list2.stream()
.filter(ob2 -> ob1.getName().equals(ob2.getName()))
.ifPresent(ob2 -> ob1.setOwner(ob2.getOwner()));
return ob1;
}).collect(Collectors.toList());
但这不是更高效,可读性只是个人喜好。