web-dev-qa-db-fra.com

Java 8 foreach ajouter un sous-objet à la nouvelle liste

Est-il possible en Java 8 d'écrire quelque chose comme ceci:

List<A> aList = getAList();
List<B> bList = new ArrayList<>();

for(A a : aList) {
    bList.add(a.getB());
}

Je pense que cela devrait être un mélange des choses suivantes:

aList.forEach((b -> a.getB());

ou

aList.forEach(bList::add);

Mais je ne peux pas mélanger ces deux pour obtenir la sortie souhaitée.

11
Valentin Grégoire

Voici quelques façons

aList.stream().map(A::getB).forEach(bList::add);
// or
aList.forEach(a -> bList.add(a.getB()));

ou vous pouvez même créer bList() à la volée:

List<B> bList = aList.stream().map(A::getB).collect(Collectors.toList());
24
Bohemian