web-dev-qa-db-fra.com

C # lambda select in Java 8

Disons que j'ai un objet en C #:

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

Pour sélectionner les noms de cette liste en C #, je ferais ce qui suit:

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

Comment pourrais-je faire la même chose dans Java 8?

41
SamuelKDavis

Si vous avez une liste de personnes comme List<Person> persons; tu peux dire

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

ou bien

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

Mais la collecte dans un List ou un autre Collection est destinée à être utilisée avec les API héritées uniquement lorsque vous avez besoin d'un tel Collection. Sinon, vous continueriez à utiliser les opérations du flux car vous pouvez faire tout ce que vous pourriez faire avec un Collection et bien plus sans avoir besoin d'un stockage intermédiaire des String, par exemple.

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