使用java8功能计算列表中的元素数

Nis*_*til 2 java java-8

    List<String> strList1 = Arrays.asList("aaa", "bbb", "ccc");
    List<String> strList2 = Arrays.asList("ddd", "eee", "fff");
    List<List<String>> list = Arrays.asList(strList1,strList2);

    int noOfElements = (int) list.stream().flatMap(i->i.stream()).count();
    System.out.println(noOfElements);
Run Code Online (Sandbox Code Playgroud)

我想计算个人数量Strings(如上面的代码片段所示).在展平列表后我能够这样做,但我想在使用的情况下做同样的事情flatMap().必须有一些方法来计算.提前致谢.

tob*_*s_k 10

您可以map将个人列表发送给他们size并计算sum:

int noOfElements = list.stream().mapToInt(List::size).sum();
Run Code Online (Sandbox Code Playgroud)

或者使用reduce替代,如建议在评论由@MarkusBenko:

int noOfElements = list.stream().reduce(0, (i, l) -> i + l.size(), (i, j) -> i + j)
Run Code Online (Sandbox Code Playgroud)

  • `int noOfElements = list.stream().reduce(0,(i,l) - > i + l.size(),(i,j) - > i + j)` (3认同)
  • @NisargPatil当然,只需使用`.reduce(0,(x,y) - > x + y)`而不是`sum()`,但为什么要这样做呢? (2认同)