java 多List集合通过lambda表达式元素相互赋值
- demo如下:
import java.io.Serializable;
public class Students implements Serializable{
private String name;
private String score;
private String lesson;
public Students() {
}
public Students(String name, String score,String lesson) {
this.name = name;
this.score = score;
this.lesson = lesson;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
public String getLesson() {
return lesson;
}
public void setLesson(String lesson) {
this.lesson = lesson;
}
}
import java.io.Serializable;
public class Teacher implements Serializable {
private String name;
private String score;
private String lesson;
public Teacher() {
}
public Teacher(String name, String score, String lesson) {
this.name = name;
this.score = score;
this.lesson = lesson;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
public String getLesson() {
return lesson;
}
public void setLesson(String lesson) {
this.lesson = lesson;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Test1 {
public static void main(String[] args) {
List<Students> students = new ArrayList<>(3);
Students students1 = new Students();
students1.setLesson("语文");
students1.setName("张三");
Students students2 = new Students();
students2.setLesson("数学");
students2.setName("李四");
Students students3 = new Students();
students3.setLesson("英语");
students3.setName("Jackey");
students.add(students1);
students.add(students2);
students.add(students3);
List<Teacher> teachers = new ArrayList<>(3);
Teacher teacher1 = new Teacher();
teacher1.setScore("34");
teacher1.setName("吕不韦");
teacher1.setLesson("语文");
Teacher teacher2 = new Teacher();
teacher2.setScore("42");
teacher2.setName("张三丰");
teacher2.setLesson("数学");
Teacher teacher3 = new Teacher();
teacher3.setScore("56");
teacher3.setName("欧阳修");
teacher3.setLesson("英语");
teachers.add(teacher1);
teachers.add(teacher2);
teachers.add(teacher3);
List<Students> list = students.stream()
.map(student -> teachers.stream()
.filter(teacher -> student.getLesson().equals(teacher.getLesson()))
.findFirst()
.map(teacher -> {
student.setScore(teacher.getScore());
return student;
}).orElse(student))
.collect(Collectors.toList());
System.out.println(list.toString());
}
}