在流中存储新实例

时间:2014-08-01 18:50:26

标签: java for-loop collections java-8 java-stream

如果我有一个对象流,我可以把它变成另一个对象的集合吗?所以,如果我有一个字符串集合,我可以把它变成一个人的集合吗?类似的东西:

strings.stream().forEach((string) -> {new Person(string);}).collect(Collectors.toList());

public class Person{
private String name;

Person(String name){
this.name = name;
    }
}

2 个答案:

答案 0 :(得分:9)

是的,我建议您使用map()代替forEach

进行尝试
List<Person> people = strings.stream()
                             .map(Person::new)
                             .collect(Collectors.toList());

注意:虽然Person::news -> new Person(s)的功能相同,但它并不完全相同。 Person::new不会创建lambda方法,但后者会创建lambda方法。在字节代码中,您将看到包含实现的合成方法。

答案 1 :(得分:5)

这就是map的用途:

List<Person> persons = strings.stream()
                      .map(s -> new Person(s))
                      .collect(Collectors.toList());