我有一个班级
public class Student{
private String name;
private String school;
}
以及Student
个对象的列表
List<Student> students = new ArrayList();
假设我已经填充了每个name
对象的Student
字段。
现在我想用相同的值填充每个对象的学校字段,比如说“XYZ学校”。我怎么能用Java 8 stream()做到这一点?
我尝试了以下方式,但它给出了错误。
List<Student> xyzStudent = students.stream()
.map(o -> o.setSchool("XYZ school"));
我应该在那里使用map
还是别的什么?我如何在xyzStudent
中收集结果?
答案 0 :(得分:2)
首先,即使在java 8中,每个循环的旧旧也没有错:
for (Student s : students) {
s.setSchool("XYZ school");
}
您可以使用foreach终端操作来实现相同的行为。
students.stream().forEach(s -> s.setSchool("XYZ school"));
虽然有些人说forEach在一个流上完成的操作不应该有副作用。