子子流中列表大小的总和

Squ*_*eez 1 java java-8 java-stream

我有以下结构:

class A {
    List<B> bs;   
}

class B {
    List<C> cs;
}

class C {
    List something.
}
Run Code Online (Sandbox Code Playgroud)

ListA班,我要进去的所有元素的SUMM something名单.我试着做以下事情:

    totalCount = as
            .stream()
            .map(a -> a.getBs()
                    .stream()
                    .mapToInt(b -> b.getSomething().size())
                    .sum());
Run Code Online (Sandbox Code Playgroud)

但那不编译.我的错误在哪里?

编译错误是: Error:(61, 21) java: incompatible types: no instance(s) of type variable(s) R exist so that java.util.stream.Stream<R> conforms to java.lang.Integer

Jac*_*ack 5

有很多方法可以获得这个结果,一种可能的方法是平放所有内容并计算结果:

A a = ..;
a.bs.stream()
  .flatMap(aa -> aa.cs.stream())
  .flatMap(bb -> bb.something.stream())
  .count();
Run Code Online (Sandbox Code Playgroud)