Acumula recuento de la lista está dentro de otra lista

Se puede:

Actualmente tengo un código como abajo. Una lista incrustado con en otra lista, y quiero obtener el recuento total de los objetos de la lista embebidos.

Quiero escribir un oneliner rápida para esto. ¿Hay una manera eficiente Lambda o FP truco que puedo hacer en Java 8?

int totalNo = 0;
for (ClassB classB : listOfClassB) {
    totalNo+= classB.getAnotherObjList().size();
}
Valentin Ruano:
long totalSum = listOfClassB.stream()
     .mapToInt(elem -> elem.getAnotherObjList().size())
     .sum();

Creo que el resultado de la suma es un longcomo varios números enteros pueden ir más allá del valor int max; siempre se puede lanzas si está seguro de que no va a resultar en desbordamiento.

No es absolutamente un de una sola línea, al menos, como el formato anterior, pero podría decirse que encaja en una sola expresión.

En caso y los elementos de la primera lista es nula o si getAnotherObjList () devuelve un valor nulo que puede soportar que mediante la filtración de esos casos:

long totalSum = listOfClassB.stream()
     .filter(Objects::nonNull)
     .map(ClassB::getAnotherObjList)
     .filter(Objects::nonNull)
     .mapToInt(List::size)
     .sum();

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=137607&siteId=1
Recomendado
Clasificación