Publicado en Tema 8 • Ejercicios

Ejercicio 1: Listas básicas (ArrayList)

Enunciado

En esta actividad practicaremos las operaciones fundamentales con la interfaz List y la implementación ArrayList en Java. Los requisitos son:

  • Crear una lista inicialmente nula y luego instanciarla como ArrayList.
  • Añadir objetos de tipo Persona.
  • Obtener elementos específicos (primero y último).
  • Modificar y eliminar elementos por su índice.
  • Recorrer la colección mediante bucles clásicos.
  • Utilizar métodos de utilidad como contains(), clear() e isEmpty().

Para entender mejor cómo funciona un ArrayList internamente (como un array dinámico que crece según se necesita), observa el siguiente diagrama:

Solución

Para resolver este ejercicio, primero definimos la clase Persona con sus atributos encapsulados y el método toString() sobrescrito para facilitar la visualización de los datos.

1. Clase Persona

package Tema8.Ejercicios.Ejercicio1;

public class Persona {
    private String nombre;
    private int edad;

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public String getNombre() { return nombre; }
    public void setNombre(String nombre) { this.nombre = nombre; }
    public int getEdad() { return edad; }
    public void setEdad(int edad) { this.edad = edad; }

    @Override
    public String toString() {
        return "Persona{nombre='" + nombre + "', edad=" + edad + "}";
    }
}

2. Clase Principal (Ejercicio 1)

En la clase principal ejecutamos la lógica solicitada, haciendo uso de los métodos de la interfaz List.

package Tema8.Ejercicios.Ejercicio1;

import java.util.ArrayList;
import java.util.List;

public class Ejercicio1 {
    public static void main(String[] args) {
        // 1. Crear una lista sin ninguna referencia (nula)
        List<Persona> lista = null;
        System.out.println("Lista inicial: " + lista);

        // 2. Asignarle una nueva instancia de ArrayList
        lista = new ArrayList<>();
        System.out.println("Lista tras instanciar: " + lista);

        // 3. Añadir 3 personas
        lista.add(new Persona("Ana", 25));
        lista.add(new Persona("David", 20));
        lista.add(new Persona("Juan", 34));
        System.out.println("Lista con personas: " + lista);

        // 4. Obtener la última persona (Java 21+)
        System.out.println("Última persona: " + lista.getLast());

        // 5. Modificar el nombre de la primera persona
        lista.getFirst().setNombre("Manuel");
        System.out.println("Tras modificar nombre: " + lista);

        // 6. Eliminar la persona de la posición central
        // En este caso, con 3 elementos, la posición central es el índice 1
        lista.remove(1);
        System.out.println("Tras eliminar posición central: " + lista);

        // 7. Recorrer la lista con un for clásico
        System.out.println("Nombres en la lista:");
        for (int i = 0; i < lista.size(); i++) {
            System.out.println("- " + lista.get(i).getNombre());
        }

        // 8. Comprobar si contiene a una nueva persona
        Persona nuevaPersona = new Persona("Carlos", 50);
        lista.add(nuevaPersona);
        System.out.println("¿Contiene a Carlos? " + lista.contains(nuevaPersona));

        // 9. Vaciar y confirmar
        lista.clear();
        System.out.println("¿Está vacía la lista? " + lista.isEmpty());
    }
}