Ejercicio 3: Gestión de una lista de nombres con ArrayList
Enunciado
En este ejercicio vamos a desarrollar un pequeño sistema interactivo para gestionar una lista de cadenas de texto (nombres) utilizando ArrayList y la entrada de datos por teclado.
Requisitos:
- Crear la lista: Declarar una variable
List<String>e instanciarla comoArrayListcon 5 nombres iniciales. - Mostrar nombres: Implementar el recorrido de la lista utilizando un bucle for-each.
- Interactividad: Solicitar al usuario un nombre para añadirlo a la colección.
- Eliminación lógica: Solicitar un nombre para eliminarlo. Si el nombre existe, se borra; si no, se muestra un mensaje de error.
- Estadísticas: Mostrar el número total de elementos usando el método
size().
Solución Propuesta
A continuación se muestra el código completo. Es importante destacar el uso de tipos genéricos <String> para asegurar que nuestra lista solo contenga cadenas de texto, evitando errores de tipo en tiempo de ejecución[cite: 2781, 2782].
package Tema8.Ejercicios.ejercicio3;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Ejercicio3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. Declarar e inicializar la lista con tipos genéricos
List<String> listaNombres = new ArrayList<>();
// 2. Añadir nombres iniciales
listaNombres.add("Fran");
listaNombres.add("Ana");
listaNombres.add("Luis");
listaNombres.add("Marta");
listaNombres.add("Pepe");
// 3. Mostrar la lista usando un bucle for-each
System.out.println("Nombres en la lista actual:");
for (String nombre : listaNombres) {
System.out.println("- " + nombre);
}
// 4. Añadir un nuevo nombre solicitado al usuario
System.out.print("\nIntroduce un nuevo nombre: ");
String nuevoNombre = sc.nextLine();
listaNombres.add(nuevoNombre);
System.out.println(nuevoNombre + " se ha añadido correctamente.");
// 5. Eliminar un nombre específico
System.out.print("\n¿Qué nombre quieres borrar?: ");
String borrarNombre = sc.nextLine();
// El método remove(Object) devuelve true si el elemento existía y fue eliminado
if (listaNombres.remove(borrarNombre)) {
System.out.println("Se ha borrado correctamente a: " + borrarNombre);
} else {
System.out.println("Error: El nombre " + borrarNombre + " no se encuentra en la lista.");
}
// 6. Mostrar el total de elementos
System.out.println("\nActualmente hay un total de " + listaNombres.size() + " nombres en la lista.");
sc.close();
}
}
Conceptos clave aplicados
- Tipos Genéricos: El uso de
<String>indica que la colección solo aceptará objetos de ese tipo, proporcionando seguridad tipográfica[cite: 2781]. - Bucle For-Each: Es la forma más limpia y eficiente de recorrer colecciones cuando no necesitamos manipular el índice directamente[cite: 2746].
- Método remove: Al pasarle un objeto (String), busca la primera ocurrencia y la elimina. Es sensible a mayúsculas y minúsculas.