Math.toIntExact expresión dentro lambda?

Jesús Zavarce:

Estoy aprendiendo acerca de las expresiones lambda. Dada una lista de nombres, quiero contar el número de nombres que comienzan con N.

Yo lo hice:

final static List<String> friends = Arrays.asList("Brian", "Nate", "Neal", "Raju", "Sara", "Scott");

public static int countFriendsStartWithN() {
    return  Math.toIntExact(friends
            .stream()
            .filter(name -> name.startsWith("N"))
            .count());
}

La llamada al método de conteo devuelve una primitiva longpero quiero una int.
He utilizado Math.toIntExactpara obtener el longvalor int.

¿Es posible obtener el intvalor directamente dentro de la expresión lambda?

VV Ole:

No, no es posible para adaptarse a su llamada a la toIntExactde su cadena de llamadas a métodos, su tubería corriente . Esto se debe a que countes una operación del terminal y devuelve una primitiva longen la que no hay ninguna llamada método es posible. Una operación de terminal es una operación que termina la tubería corriente y produce un resultado (o un efecto secundario).

Así que creo que lo mejor que puede hacer es vivir con el código que ya tiene. En mi humilde opinión, está bien.

Supongo que te gusta

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