Hola William, espero que estés bien
Entiendo tu confusión respecto al uso de findFirst()
y cómo se relaciona con el flujo de trabajo que estás tratando de implementar. En el contexto de la actividad, el objetivo es filtrar transacciones con valores superiores a 5000, imprimirlas, y luego recolectar los resultados en un Set
antes de buscar la primera transacción.
La opción correcta, como se menciona en la actividad, es la opción C:
transacciones.stream()
.filter(t -> t.getValor() > 5000)
.peek(System.out::println)
.collect(Collectors.toSet()).stream()
.findFirst();
Aquí está el desglose de por qué esta opción es correcta:
- Filtrado:
filter(t -> t.getValor() > 5000)
asegura que solo las transacciones con un valor superior a 5000 sean procesadas. - Impresión:
peek(System.out::println)
imprime cada transacción que pasa el filtro, lo cual es útil para registro o depuración. - Recolección en un Set:
collect(Collectors.toSet())
recolecta las transacciones filtradas en un Set
, eliminando duplicados si los hubiera. - Buscar el primero:
.stream().findFirst()
se utiliza para encontrar la primera transacción en el Set
. Es importante notar que findFirst()
devuelve un Optional
, lo que significa que puede o no contener un valor, dependiendo de si el Set
está vacío o no.
Espero que esto aclare tus dudas sobre el ejercicio y el uso de findFirst()
en este contexto.
Espero haber ayudado y buenos estudios!