在流中存储新实例

Sar*_*abo 2 java collections for-loop 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 9

是的,我建议你尝试map()而不是forEach

List<Person> people = strings.stream()
                             .map(Person::new)
                             .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

注意:虽然Person::new它做同样的事情s -> new Person(s)并不完全相同.在Person::new不创建一个lambda方法,但后者则.在字节代码中,您将看到包含实现的合成方法.


Era*_*ran 5

map是为了:

List<Person> persons = strings.stream()
                      .map(s -> new Person(s))
                      .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)