Подтвердить что ты не робот

С# lambda select в java 8

Скажем, у меня есть объект в С#:

public class Person
{
    public string Name{get;set;}
    public int Age{get;set;}
}

Чтобы выбрать имена из этого списка в С#, я бы сделал следующее:

List<string> names = person.Select(x=>x.Name).ToList();

Как бы я сделал то же самое в Java 8?

4b9b3361

Ответ 1

Если у вас есть список таких людей, как List<Person> persons;, вы можете сказать

List<String> names
  =persons.stream().map(x->x.getName()).collect(Collectors.toList());

или, альтернативно

List<String> names
  =persons.stream().map(Person::getName).collect(Collectors.toList());

Но сбор в List или другой Collection предназначен для использования с устаревшими API только там, где вам нужен Collection. В противном случае вы продолжаете использовать операции с потоками, так как вы можете делать все, что можете, с помощью Collection и намного больше, не требуя промежуточного хранилища String s, например.

persons.stream().map(Person::getName).forEach(System.out::println);