Contenido del curso

Construcción de clases y modelado de objetos

Buscar y eliminar películas en Java

Resumen

Aprender a buscar y eliminar elementos en una lista en Java es clave para que cualquier plataforma responda a lo que el usuario quiere hacer. Aquí trabajamos sobre una plataforma tipo Platzi Play, donde cargamos un set de películas inicial, agregamos un buscador por título y habilitamos la eliminación de contenido, todo con flujos de control y métodos reutilizables.

¿Cómo precargar datos en una aplicación Java al iniciar?

Antes de buscar o eliminar, necesitas tener datos con los que jugar. La idea es no escribir información manualmente cada vez que ejecutes el programa.

Para lograrlo, creamos un método llamado cargarPeliculas por fuera del main que recibe una plataforma como parámetro y le agrega títulos como Shrek, Titanic, Coco e Interestelar. Ese método se llama antes del while true del menú principal, para que las películas se carguen una sola vez al arrancar y no en cada iteración del bucle.

¿Por qué llamar cargarPeliculas fuera del while? Si lo metes dentro del while true, las películas se agregarían en cada vuelta del menú y duplicarías el contenido sin parar.

¿Dónde ubicar el método de carga inicial?

La estructura queda así:

  • El método cargarPeliculas(plataforma) vive fuera del main.
  • Se invoca una sola vez antes del while true.
  • Dentro del while true queda únicamente el switch que controla la opción elegida por el usuario.

¿Cómo buscar una película por título en Java?

Con los datos cargados, toca implementar la búsqueda. Creamos un método llamado buscarPorTitulo dentro de la clase Plataforma que retorna una sola película y recibe un String con el título.

La lógica recorre la lista con un for y compara el título de cada película con el título recibido. Aquí entra un detalle importante: en lugar de usar equals, usamos equalsIgnoreCase.

¿Qué hace equalsIgnoreCase en Java? Compara dos cadenas de texto sin importar si están en mayúsculas o minúsculas. Así, titanic y Titanic se consideran iguales.

Cuando encuentra coincidencia, retorna la película de inmediato. Si termina el for sin encontrar nada, retorna null por fuera del bucle.

¿Por qué el método no siempre retorna null?

Esta es una duda común al ver dos return en el mismo método. La respuesta corta: el return dentro del if corta la ejecución apenas hay match, así que el return null solo se alcanza cuando recorriste toda la lista sin éxito.

En el main, la implementación se ve así:

  • Capturas el nombre buscado con ScannerUtils.
  • Declaras una variable Pelicula pelicula = plataforma.buscarPorTitulo(nombreBuscado).
  • Si pelicula != null, imprimes la ficha técnica.
  • Si es null, muestras un mensaje usando plataforma.getNombre() para personalizar la respuesta, por ejemplo: El Señor de los Anillos no existe dentro de Platzi Play.

Un detalle visual: puedes enriquecer la ficha técnica con emojis dentro del código, como estrellas para la calificación o íconos en el género. Java los soporta sin problema.

¿Cómo eliminar un elemento de una lista en Java?

La eliminación reutiliza casi toda la lógica de búsqueda. Antes de borrar algo, necesitas confirmar que existe.

El flujo es:

  1. Pides el nombre del contenido a eliminar con ScannerUtils.
  2. Llamas a plataforma.buscarPorTitulo(nombreAEliminar) y guardas el resultado en una variable.
  3. Si el resultado es null, avisas que no existe dentro de la plataforma.
  4. Si no es null, llamas a plataforma.eliminar(contenido) y muestras un mensaje tipo Coco eliminado con una X de confirmación.

Después de eliminar, puedes verificar el resultado usando la búsqueda. Si borras Coco y luego intentas buscarlo, el sistema responde Coco no existe dentro de Platzi Play, porque ya no está en la lista.

¿Qué validación heredamos del ScannerUtils?

En la iteración anterior editamos ScannerUtils para validar opciones del menú. Si el usuario escribe un número que no está dentro del rango permitido, el sistema responde dato no aceptado, ingrese una de las opciones. Eso evita que el switch reciba valores inesperados y se rompa el flujo del while true.

Habilidades y conceptos clave de esta clase

Estas son las piezas técnicas que aparecen en el recorrido y conviene tener claras:

  • Método cargarPeliculas: precarga un set de datos al iniciar la aplicación, fuera del bucle principal [01:00].
  • while true con switch: estructura para mantener el menú activo y reaccionar a la opción elegida por el usuario [00:42].
  • equalsIgnoreCase: compara strings ignorando mayúsculas y minúsculas, ideal para búsquedas por título [02:30].
  • Recorrido con for y return temprano: permite salir del método apenas encuentras coincidencia [02:50].
  • Retorno null como ausencia de resultado: convención en Java para indicar que no se encontró el elemento buscado [03:05].
  • Validación con if (pelicula != null): protege la lógica antes de imprimir ficha técnica o ejecutar eliminar [03:40].
  • plataforma.getNombre(): personaliza los mensajes al usuario con el nombre real de la plataforma [04:10].
  • Reutilización de búsqueda dentro de eliminar: evita borrar algo que no existe y mantiene el código DRY [05:30].

Con esto, la plataforma ya agrega, busca y elimina contenido de forma dinámica. En la siguiente entrega vamos a reescribir parte de esta lógica con streams y lambdas para escribir menos código y que sea más expresivo. ¿Cómo resolverías tú la búsqueda con equalsIgnoreCase? Cuéntame en los comentarios.