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 long
pero quiero una int
.
He utilizado Math.toIntExact
para obtener el long
valor int
.
¿Es posible obtener el int
valor directamente dentro de la expresión lambda?
No, no es posible para adaptarse a su llamada a la toIntExact
de su cadena de llamadas a métodos, su tubería corriente . Esto se debe a que count
es una operación del terminal y devuelve una primitiva long
en 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.