- Clase Titulo implementando Comparable
Se implementa la interfaz Comparable para poder ordenar los títulos por nombre.
package com.alura.screenmatch.modelos;
public class Titulo implements Comparable {
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;
}
@Override
public int compareTo(Titulo otroTitulo) {
return this.getNombre().compareTo(otroTitulo.getNombre());
}
@Override
public String toString() {
return "Titulo: " + this.getNombre() + " (" + this.getFechaDeLanzamiento() + ")";
}
}
2. Clase Serie sobrescribiendo toString()
package com.alura.screenmatch.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() + ")";
}
}
3. Clase Pelicula
package com.alura.screenmatch.modelos;
public class Pelicula extends Titulo {
public Pelicula(String nombre, int fechaDeLanzamiento) {
super(nombre, fechaDeLanzamiento);
}
@Override
public String toString() {
return "Pelicula: " + this.getNombre() + " (" + this.getFechaDeLanzamiento() + ")";
}
}
4. Clase PrincipalConListas
Aquí se crea la lista y se ordena con Collections.sort().
import java.util.ArrayList;
import java.util.Collections;
import com.alura.screenmatch.modelos.Pelicula;
import com.alura.screenmatch.modelos.Serie;
import com.alura.screenmatch.modelos.Titulo;
public class PrincipalConListas {
public static void main(String[] args) {
Pelicula favorito = new Pelicula("El señor de los anillos", 2001);
Pelicula otro = new Pelicula("John Wick", 2014);
Serie serie = new Serie("La Casa de Papel", 2017);
ArrayList<Titulo> lista = new ArrayList<>();
lista.add(favorito);
lista.add(otro);
lista.add(serie);
Collections.sort(lista);
System.out.println(lista);
}
}