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()eisEmpty().
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());
}
}