He creado una matriz y tratando de corrientes de uso para encontrar el primer número impar de la siguiente manera:
int[] arr = new int[]{2, 4, 6, 8, 9, 12};
int oddOne = Stream.of(arr).filter(i -> i % 2 != 0).findFirst().get();
// fails above
Error: | incompatible types: int[] cannot be converted to int
¿Qué estoy haciendo mal? ¿Cómo puedo solucionar esto?
Es necesario utilizar Arrays.stream()
:
Arrays.stream(arr).filter(i -> i % 2 != 0).findFirst().getAsInt();
Cuales:
Devuelve una secuencia
IntStream
con la matriz especificada como su fuente.
A partir de ahora se utiliza el método sobrecargado Stream.of(T t)
cual simplemente:
Devuelve una secuencia
Stream
que contiene un solo elemento.
Por lo que sólo será una Stream
de la solaint[]
Además, como señaló NullPointer, llamando get()
sin garantizar de hecho hay un número impar en el Array
causará un error. Lo mejor es utilizar orElse()
para devolver un valor por defecto si no hay un número impar está presente