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?
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);