Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Duda sobre este Ejercicio

En el curso dijeron que no podemos usar findFirst() directamente porque eso devuelve un objeto Optional y que puede tener o no valor. Pero en este ejercicio nos pide que lo usemos, lo cual tiende a confundir. Tampoco usamos .collect(Collectors.toSet()).stream() de esta manera pues no se entiende la funcionalidad o no comprendemos la funcionalidad real de Collector porque aprendimos que era para coleccionar listas.

transacciones.stream() .filter(t -> t.getValor() > 5000) .peek(System.out::println) .collect(Collectors.toSet()).stream() .findFirst();

1 respuesta

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:

  1. Filtrado: filter(t -> t.getValor() > 5000) asegura que solo las transacciones con un valor superior a 5000 sean procesadas.
  2. Impresión: peek(System.out::println) imprime cada transacción que pasa el filtro, lo cual es útil para registro o depuración.
  3. Recolección en un Set: collect(Collectors.toSet()) recolecta las transacciones filtradas en un Set, eliminando duplicados si los hubiera.
  4. 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!