What is the Java equivalent for Enumerable.Select with lambdas in C#?

If you have a list of Persons like List<Person> persons; you can say

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

or, alternatively

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

But collecting into a List or other Collection is intented to be used with legacy APIs only where you need such a Collection. Otherwise you would proceed using the stream’s operations as you can do everything you could do with a Collection and a lot more without the need for an intermediate storage of the Strings, e.g.

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