Transformación y ordenamiento de listas con streams en Java

Clase 20 de 31Curso de Java

Resumen

Aprende a aplicar streams y expresiones lambda en Java para transformar, ordenar y filtrar listas de objetos fácilmente. Esta técnica te permitirá escribir un código mucho más limpio, moderno y comprensible, simplificando operaciones cotidianas dentro de tus aplicaciones.

¿Cómo transformar listas de objetos en listas de strings usando streams en Java?

La función map resulta clave para convertir listas de objetos en listas de otros tipos, como strings. Por ejemplo, si tienes una lista de películas y quieres obtener solo sus títulos, puedes emplear un stream con una lambda que extraiga el título de cada objeto. El resultado será una nueva lista de strings con los títulos extraídos.

  • Utiliza stream() sobre la lista original para trabajar en modo funcional.
  • Aplica .map(elemento -> elemento.getTítulo()) para transformar cada objeto en su título.
  • Puedes simplificarlo usando method reference con Elemento::getTítulo para mayor legibilidad.
  • El resultado final lo puedes recoger con .collect(Collectors.toList()), retornando la lista transformada.

¿Cuál es la forma eficiente de sumar propiedades numéricas en listas con streams?

Para calcular, por ejemplo, la duración total de todas las películas de una plataforma, el método mapToInt convierte cada objeto de la lista en un valor entero representando la propiedad deseada (en este caso, la duración). Luego, puedes sumar todos esos valores fácilmente:

  • Transforma la lista a stream con .stream().
  • Usa .mapToInt(Elemento::getDuración) para enfocar solo en la propiedad numérica.
  • Aplica .sum() para obtener el total sin bucles adicionales ni contadores manuales.

¿Cómo ordenar listas de objetos por una propiedad específica en orden deseado?

Ordenar una lista por calificación, de mayor a menor, es muy útil para destacar los contenidos más populares. El método sorted junto con Comparator.comparing facilita este proceso:

  • Inicializa el stream con .stream() sobre tu lista.
  • Aplica .sorted(Comparator.comparing(Elemento::getCalificación).reversed()) para ordenar por calificación descendente.
  • Limita el número de resultados con .limit(cantidad) si deseas mostrar solo los primeros n elementos.
  • Recoge los elementos ordenados en una lista nueva con .collect(Collectors.toList()).

¿Qué retos prácticos puedes enfrentar usando streams y lambdas en Java?

Para poner en práctica lo aprendido y entender mejor la programación funcional:

  • Filtra las películas con calificación igual o superior a cuatro usando streams y lambdas para obtener solo las más populares.
  • Crea un método que encuentre la película más larga o más corta aplicando funciones de transformación y reducción.

Comparte tus soluciones y avances con la comunidad para fomentar el aprendizaje colaborativo y seguir sumando experiencia con estas potentes herramientas de Java.