Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en aula: ordenando con Comparable

presento el código modificado que implementa la interfaz Comparable en la clase Titulo, sobreescribe el método toString en la clase Serie y utiliza Collections.sort en la clase PrincipalConListas

import java.util.ArrayList; import java.util.Collections;

class Titulo implements Comparable { private String nombre;

public Titulo(String nombre) {
    this.nombre = nombre;
}

public String getNombre() {
    return nombre;
}

@Override
public int compareTo(Titulo otroTitulo) {
    return this.getNombre().compareTo(otroTitulo.getNombre());
}

}

class Pelicula extends Titulo { // ... (resto del código de la clase Pelicula) }

class Serie extends Titulo { private int fechaDeLanzamiento;

public Serie(String nombre, int fechaDeLanzamiento) {
    super(nombre);
    this.fechaDeLanzamiento = fechaDeLanzamiento;
}

public int getFechaDeLanzamiento() {
    return fechaDeLanzamiento;
}

@Override
public String toString() {
    return "Serie: " + this.getNombre() + " (" + this.getFechaDeLanzamiento() + ")";
}

}

public class PrincipalConListas { public static void main(String[] args) { // ... (código para crear las instancias de Pelicula y Serie)

    ArrayList<Titulo> lista = new ArrayList<>();
    lista.add(favorita);
    lista.add(otra);
    lista.add(serie);

    Collections.sort(lista); // Ordenar la lista

    System.out.println(lista); 
}

}

Explicación de los cambios:

Clase Titulo:

Implementa la interfaz Comparable. Implementa el método compareTo(Titulo otroTitulo). El método compareTo compara los títulos basándose en sus nombres utilizando el método compareTo de la clase String. Esto ordenará los títulos alfabéticamente. Clase Serie:

Sobreescribe el método toString() para proporcionar una representación en cadena más informativa de un objeto Serie, incluyendo su nombre y fecha de lanzamiento. Clase PrincipalConListas:

Después de agregar los títulos a la lista, se llama a Collections.sort(lista). Esto ordenará los elementos de la lista utilizando el método compareTo implementado en la clase Titulo. Salida esperada:

La salida mostrará la lista de títulos ordenados alfabéticamente. La representación de la serie incluirá su fecha de lanzamiento gracias a la sobreescritura del método toString().

[Serie: La Casa de Papel (2017), Pelicula: El señor de los anillos, Pelicula: John Wick] Puntos clave:

La interfaz Comparable permite que los objetos de una clase se comparen entre sí, lo que es necesario para ordenarlos. El método compareTo define cómo se comparan dos objetos de la misma clase. Collections.sort utiliza el método compareTo para ordenar los elementos de una colección. Sobreescribir toString permite personalizar la representación en cadena de un objeto.

1 respuesta

Hola Frank, espero que estés bien

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!