Manipular de salida en la corriente java8

Degth:

Imaginemos que tenemos lista de objetos con 3 minutos de campo como valores: 5,5,7, 8

int sumOfFields = found.stream()
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .mapToInt(abc::getMinutes)
        .sum();

// will return 10

Pero, ¿cómo puedo cambiar mi salida por ejemplo, en lugar de getMinutes Quiero volver a mi propio valor, por ejemplo, 40

int sumOfFields = found.stream()
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .mapToInt(abc ->abc.getMinutes() = 40)  //this is pseudo code what I try to achive
        .sum();

// output should be 80.
también:

En realidad, no sé por qué la gente no hacen una respuesta a esto, sin embargo, como se señala en los comentarios, puede seguir ya sea del enfoque

int sumOfFields = found.stream()
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .mapToInt(abc -> 40) // map value to be returned as 40 
        .sum();

o en su lugar ya que va a sustituir todos esos valores con un valor constante 40, también se puede hacer uso de la count()y se multiplican que con el valor constante.

int sumOfFields = (int) found.stream() // casting from long to int
        .filter(abc -> minutesLessThan5(abc.getMinutes())))
        .count() * 40;

Supongo que te gusta

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