如何使用Java 8流将值添加到列表中的项的字段

时间:2015-08-13 14:00:19

标签: java java-8 java-stream

我有一个班级

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中收集结果?

1 个答案:

答案 0 :(得分:2)

首先,即使在java 8中,每个循环的旧旧也没有错:

for (Student s : students) {
    s.setSchool("XYZ school");
}

您可以使用foreach终端操作来实现相同的行为。

students.stream().forEach(s -> s.setSchool("XYZ school"));

虽然有些人说forEach在一个流上完成的操作不应该有副作用。