如果我有一个对象流,我可以把它变成另一个对象的集合吗?所以,如果我有一个字符串集合,我可以把它变成一个人的集合吗?类似的东西:
strings.stream().forEach((string) -> {new Person(string);}).collect(Collectors.toList());
public class Person{
private String name;
Person(String name){
this.name = name;
}
}
答案 0 :(得分:9)
是的,我建议您使用map()
代替forEach
List<Person> people = strings.stream()
.map(Person::new)
.collect(Collectors.toList());
注意:虽然Person::new
与s -> new Person(s)
的功能相同,但它并不完全相同。 Person::new
不会创建lambda方法,但后者会创建lambda方法。在字节代码中,您将看到包含实现的合成方法。
答案 1 :(得分:5)
这就是map
的用途:
List<Person> persons = strings.stream()
.map(s -> new Person(s))
.collect(Collectors.toList());