Itérer sur Liste des objets dans un autre objet que j'ai dans la liste

erykzabujca:

J'ai donc la structure comme ça

List<Object1> list1

class Object1{
   private List<Object2> list2
}
class Object2{
   private List<Object3> list3
} 

Et je dois obtenir le nombre de toutes les instances Objects3. Je suis nouveau à java-8 et cours d'eau de sorte qu'il est assez déroutant pour moi, mais j'ai essayé de faire grincer comme ça.

Integer count =
                list1
                .parallelStream()
                .reduce(0,(sum, q) -> q.getList2()
                        .forEach()
                        .reduce(0,(sum2, q2) -> sum2 + q2.getList3().size()));

Suis-je encore près?

Ousmane D. :

Je ne vous blâme pas, étant donné que vous êtes nouveau à l'API de flux, mais votre approche est trop compliqué.

Je vais personnellement avec cette approche pour la simplicité et la lisibilité.

list1.stream() // Stream<Object1>
     .flatMap(s -> s.getList2().stream()) // Stream<Object2>
     .flatMap(s -> s.getList3().stream()) // Stream<Object3>
     .count(); // return the count of all Object3 instances

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=331018&siteId=1
conseillé
Classement