Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haga lo que hicimos en aula: ordenando con Comparable

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);
    }
}