Eliminar elementos de una lista con Iterator en Java
En este ejercicio aprenderás a usar un Iterator en Java para recorrer una lista de nombres introducidos por el usuario. El programa permite eliminar todos los nombres que comiencen por una letra específica, ingresada también por el usuario. Es una forma segura y eficaz de modificar una colección mientras la recorres, evitando errores comunes como ConcurrentModificationException.
Código completo:
/public class UsoDeInterator {
public static void main(String[] args) {
// Variable para almacenar el nombre;
String nombre;
// Variable para letra:
String letra;
// Creamos la lista de tipo String para almacenar los nombres.
List <String> nombres = new ArrayList<>();
// Añadimos la clase Scanner:
Scanner sc = new Scanner(System.in);
// Pedimos los nombres al usuario:
System.out.println("Introduce los nombres que quieres añadir: ");
// Asignamos cada nombre a la variable creada:
nombre = sc.nextLine();
// Mientras que el nombre sea distinto a salir se irá pidiendo un nuevo nombre.
while (!nombre.equalsIgnoreCase("salir"))
{
System.out.println("Introduce el siguiente nombre o escribe salir");
// Se añade el nombre a la lista creada.
nombres.add(nombre);
// Se pide de nuevo el nombre.
nombre = sc.nextLine();
}
// Se imprime cada valor de la lista mientras existan valores
for (int i = 0; i < nombres.size(); i++)
{
System.out.println("Nombre: " + nombres.get(i));
}
// Usaremos Iterator para eliminar nombres mientras recorremos la lista:
Iterator <String> it = nombres.iterator();
System.out.println("Borraremos los nombres que comienzan por la letra ingresada: ");
System.out.println("Ingrese una letra: ");
letra = sc.nextLine();
// Mientras que existan datos:
while (it.hasNext()) {
String nombreLocal = it.next();
// Esta condición devuelve true si nombreLocal empieza por la letra letra, sin importar si originalmente estaban en mayúsculas o minúsculas.
if (nombreLocal.toLowerCase().startsWith(letra.toLowerCase())) {
// borra mientras recorre.
it.remove();
}
}
// Imprimir la lista final después de eliminar
System.out.println("Lista después de eliminar los nombres:");
for (String nom : nombres) {
System.out.println("Nombre: " + nom);
}
sc.close();
}

Seguir leyendo:





