Java8: sum los valores del campo específico de los objetos en una lista

Supongamos que tiene una clase Obj

class Obj{ int field; } 

y que tiene una lista de instancias Obj , es decir, List lst .

Ahora, ¿cómo puedo encontrar en Java8 con streams la sum de los valores del field int fields de los objetos en la lista lst bajo un criterio de filtrado (por ejemplo, para un objeto o , el criterio es o.field > 10 )?

Tu puedes hacer

 int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(o -> o.getField()).sum(); 

o (usando la referencia del Método)

 int sum = lst.stream().filter(o -> o.getField() > 10).mapToInt(Obj::getField).sum(); 

Puedes probar

 int sum = list.stream().filter(o->o.field>10).mapToInt(o->o.field).sum(); 

Como se explica aquí

Tratar:

 int sum = lst.stream().filter(o -> o.field > 10).mapToInt(o -> o.field).sum(); 

También puede collect con un Collectors#summingInt(ToIntFunction) apropiado como Collectors#summingInt(ToIntFunction)

Devuelve un Collector que produce la sum de una función de valor entero aplicada a los elementos de entrada. Si no hay elementos presentes, el resultado es 0.

Por ejemplo

 Stream filtered = list.stream().filter(o -> o.field > 10); int sum = filtered.collect(Collectors.summingInt(o -> o.field));