java8将部分字段相同的两个list互相赋值
时间: 2023-06-06 12:05:13 浏览: 130
这是一个技术问题,可以回答。在java8中,可以使用stream和lambda表达式来实现将部分字段相同的两个list互相赋值。具体代码实现可以参考以下示例:
```
List<Person> list1 = Arrays.asList(
new Person("John", 28, "M"),
new Person("Jane", 23, "F"),
new Person("Tom", 31, "M")
);
List<Person> list2 = Arrays.asList(
new Person("Mary", 25, "F"),
new Person("Peter", 29, "M"),
new Person("Sally", 33, "F")
);
//将list2中与list1中name相同的元素的age和gender赋值给list1
list1.stream()
.filter(p1 -> list2.stream().anyMatch(p2 -> p2.getName().equals(p1.getName())))
.forEach(p1 -> list2.stream()
.filter(p2 -> p2.getName().equals(p1.getName()))
.findFirst()
.ifPresent(p2 -> {
p1.setAge(p2.getAge());
p1.setGender(p2.getGender());
}));
```
其中Person类定义如下:
```
class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
//getter和setter方法省略
}
```
通过以上代码,可以实现将list2中与list1中name相同的元素的age和gender赋值给list1。
阅读全文