modelos/Titulo.java
package modelos;
// Implementamos Comparable para decir que los Títulos se pueden comparar entre sí
public class Titulo implements Comparable<Titulo> {
private String nombre;
private int fechaDeLanzamiento;
public Titulo(String nombre, int fechaDeLanzamiento) {
this.nombre = nombre;
this.fechaDeLanzamiento = fechaDeLanzamiento;
}
public String getNombre() { return nombre; }
public int getFechaDeLanzamiento() { return fechaDeLanzamiento; }
// Implementación del método de la interfaz Comparable
@Override
public int compareTo(Titulo otroTitulo) {
// Delegamos la comparación al String 'nombre', que ya sabe cómo compararse alfabéticamente
return this.getNombre().compareTo(otroTitulo.getNombre());
}
@Override
public String toString() {
return "Título: " + nombre + " (" + fechaDeLanzamiento + ")";
}
}
modelos/Serie.java
package modelos;
public class Serie extends Titulo {
public Serie(String nombre, int fechaDeLanzamiento) {
super(nombre, fechaDeLanzamiento);
}
@Override
public String toString() {
return "Serie: " + this.getNombre() + " (" + this.getFechaDeLanzamiento() + ")";
}
}
modelos/Pelicula.java
package modelos;
public class Pelicula extends Titulo {
public Pelicula(String nombre, int fechaDeLanzamiento) {
super(nombre, fechaDeLanzamiento);
}
// Si quieres que también diga "Película:" al imprimir:
@Override
public String toString() {
return "Película: " + this.getNombre() + " (" + this.getFechaDeLanzamiento() + ")";
}
}
principal/PrincipalConListas.java
package principal;
import modelos.Pelicula;
import modelos.Serie;
import modelos.Titulo;
import java.util.ArrayList;
import java.util.Collections; // ¡Importante para ordenar!
public class PrincipalConListas {
public static void main(String[] args) {
Pelicula favorita = new Pelicula("El señor de los anillos", 2001);
Pelicula otra = new Pelicula("John Wick", 2014);
Serie serie = new Serie("La Casa de Papel", 2017);
ArrayList<Titulo> lista = new ArrayList<>();
lista.add(favorita);
lista.add(otra);
lista.add(serie);
System.out.println("Lista original:");
System.out.println(lista);
// El método sort usa el compareTo que escribimos en la clase Titulo
Collections.sort(lista);
System.out.println("\nLista ordenada alfabéticamente:");
System.out.println(lista);
}
}