2014-08-01 5 views
2

Если у меня есть поток объектов, могу ли я превратить его в коллекцию другого объекта? Итак, если у меня есть коллекция строк, я могу превратить ее в коллекцию Лиц? Что-то вроде:Хранение нового экземпляра в потоке

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

public class Person{ 
private String name; 

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

ответ

9

да, я предлагаю вам попробовать его с map() вместо forEach

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

Примечание: в то время как Person::new делает то же самое, как s -> new Person(s) это не совсем то же самое , Person::new не создает лямбда-метод, но последний делает. В байтовом коде вы увидите синтетический метод, который содержит реализацию.

5

Вот что map для:

List<Person> persons = strings.stream() 
         .map(s -> new Person(s)) 
         .collect(Collectors.toList()); 
Смежные вопросы