私はリストを持っている別のオブジェクト内のオブジェクトのリストを反復処理

erykzabujca:

私はそのような構造を持っているので、

List<Object1> list1

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

そして、私はすべてのObjects3インスタンスの数を取得する必要があります。それはかなり私のために混乱していますので、私は、java-8およびストリームに新しいですが、私はそのようになめらかを実行しようとしました。

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

私も近いのでしょうか?

Ousmane D .:

私はあなたのストリームAPIに新しいしていることを考えると、あなたを責めませんが、あなたのアプローチがovercomplicatedています。

私は個人的にシンプル&読みやすくするために、このアプローチで行くと思います。

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=331017&siteId=1