Contenido del curso
Pensando en objetos
Construcción de clases y modelado de objetos
- 10

Métodos estáticos para clases utilitarias en Java
08:43 min - 11

Constantes en Java: inmutabilidad con static final
04:08 min - 12

Constructores en Java para objetos con datos
08:10 min - 13

Gestión de memoria en Java: stack, heap y garbage collector
07:04 min - 14

Encapsulamiento en Java: Atributos privados y métodos getter y setter
09:26 min - 15

Listas en Java: agregar, recorrer y eliminar
11:12 min - 16

Asociación, agregación y composición en Java
03:45 min - 17

Menú interactivo en Java con switch
11:37 min - 18

Buscar y eliminar películas en Java
Viendo ahora
Estructuras de datos y Java moderno
- 19

Streams y lambdas para filtrar listas en Java
11:55 min - 20

Ordenar y transformar listas con streams en Java
11:49 min - 21

Validación de entrada con enums en Java
11:56 min - 22

Excepciones personalizadas en Java
08:16 min - 23

Records para simplificar código inmutable en Java
06:59 min - 24

Mapas en Java para contar visualizaciones de películas
09:47 min - 25

Leer archivos planos con Java nio
13:48 min - 26

Escribir en archivos planos con Files.writeString
09:50 min
Reutilización y diseño orientado a 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
cargarPeliculasfuera del while? Si lo metes dentro delwhile 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 delmain. - Se invoca una sola vez antes del
while true. - Dentro del
while truequeda únicamente elswitchque 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
equalsIgnoreCaseen 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 usandoplataforma.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:
- Pides el nombre del contenido a eliminar con
ScannerUtils. - Llamas a
plataforma.buscarPorTitulo(nombreAEliminar)y guardas el resultado en una variable. - Si el resultado es
null, avisas que no existe dentro de la plataforma. - Si no es
null, llamas aplataforma.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 trueconswitch: 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
foryreturntemprano: permite salir del método apenas encuentras coincidencia [02:50]. - Retorno
nullcomo 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 ejecutareliminar[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.