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

package co.ancabu.test;

public class Title implements Comparable<Title>{
    private String nameFilm;
    private int yearlaunch;
    private int minutesDuration;
    private boolean includePlan;
    private double sumEvaluation;
    private int numEvaluations;

    public  Title(String nameFilm,int yearlaunch){
        this.nameFilm=nameFilm;
        this.yearlaunch=yearlaunch;
    }

    public void setNameFilm(String nameFilm) {
        this.nameFilm = nameFilm;
    }

    public void setYearlaunch(int yearlaunch) {
        this.yearlaunch = yearlaunch;
    }

    public String getnameFilm() {
        return nameFilm;
    }

    public int getYearlaunch() {
        return yearlaunch;
    }

    public int getMinutesDuration() {
        return minutesDuration;
    }

    public boolean getIncludePlan() {
        return includePlan;
    }

    public void setMinutesDuration(int minutesDuration) {
        this.minutesDuration = minutesDuration;
    }

    public void setIncludePlan(boolean includePlan) {
        this.includePlan = includePlan;
    }

    public int getNumEvaluations(){
        return  numEvaluations;
    }
    public void showFeauturesMovies(){
        System.out.println("""
                
                """);
        System.out.println("Nombre: "+getnameFilm());
        System.out.println("Fecha de lanzamiento: "+getYearlaunch());
        System.out.println("Duracion en Minutos: "+getMinutesDuration());
        System.out.println("Incluye Plan: "+getIncludePlan());
        System.out.println("Evaluacion: "+getNumEvaluations());
        System.out.println("Media: "+calMedia());
    }
    public void validation(double note){
        sumEvaluation+=note;
        numEvaluations++;
    }
    public double calMedia(){
        return sumEvaluation/numEvaluations;
    }

    @Override
    public int compareTo(Title otroTitulo) {
        return getnameFilm().compareTo(otroTitulo.getnameFilm());
    }
}
package principal;

import co.ancabu.calculo.filtroPeliculaAno;
import co.ancabu.test.Series;
import co.ancabu.test.Title;
import co.ancabu.test.movie;

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

public class main_arrays {
    public static void main(String[] args) {
        movie myMovie=new movie("Terminator",2018,"Leonardo Dicaprio");
        myMovie.validation(9);
        Series seriesObjet=new Series("Vikingos",2016,1,6,50);
        seriesObjet.validation(6);
        movie yourMovie=new movie("El caballero Oscuro",2005,"Leonardo Dicaprio");
        yourMovie.validation(8);
        var newMovie=new movie("Atenea",2024,"");
        newMovie.validation(8);
        ArrayList<Title> lista=new ArrayList<>();

        lista.add(myMovie);
        lista.add(yourMovie);
        lista.add(newMovie);
        lista.add(seriesObjet);

        for(Title item:lista) {
            if(item instanceof movie movie1){
                System.out.println(item);
//                movie movie1=(movie) item;
                System.out.println(movie1.getClasificacion());
            }
        }
//        lista.forEach(item-> System.out.println(item));
//        lista.forEach(System.out::println);

        Collections.sort(lista);
        System.out.println(lista);
package co.ancabu.test;

public class Series extends Title{
    private int season;
    private int episodeSeason;
    private int minutesEpisodes;

    public Series(String nameFilm, int yearFilm, int season,int episodeSeason, int minutesEpisodes){
        super(nameFilm,yearFilm);
        this.season=season;
        this.episodeSeason=season;
        this.minutesEpisodes=minutesEpisodes;

    }
    @Override
    public int getMinutesDuration() {
        return season*episodeSeason*minutesEpisodes;
    }

    public int getSeason() {
        return season;
    }

    public void setSeason(int season) {
        this.season = season;
    }

    public int getEpisodeSeason() {
        return episodeSeason;
    }

    public void setEpisodeSeason(int episodeSeason) {
        this.episodeSeason = episodeSeason;
    }

    public int getMinutesEpisodes() {
        return minutesEpisodes;
    }

    public void setMinutesEpisodes(int minutesEpisodes) {
        this.minutesEpisodes = minutesEpisodes;
    }

    @Override
    public String toString() {
        return "String "+this.getnameFilm()+" ("+this.getYearlaunch()+")";
    }
}
1 respuesta

¡Hola Estudiante, espero que estés bien!

Espero que estés bien. He revisado tu implementación y parece que estás en el camino correcto para ordenar objetos de la clase Title utilizando la interfaz Comparable. Aquí hay algunos puntos que podrían ayudarte:

  1. Implementación de compareTo: Ya has implementado el método compareTo en la clase Title, lo cual es excelente. Este método compara los títulos de las películas (nameFilm) para determinar el orden. Asegúrate de que los nombres de las películas no sean null para evitar errores de comparación.

  2. Uso de Collections.sort: En tu clase main_arrays, estás utilizando Collections.sort(lista); correctamente para ordenar la lista de títulos. Sin embargo, asegúrate de que todos los elementos de la lista implementen la interfaz Comparable, lo cual ya has hecho extendiendo Title en la clase Series.

  3. Método toString: Has sobrescrito el método toString en la clase Series. Esto es importante para que cuando imprimas la lista, obtengas una representación legible de los objetos. Asegúrate de que el método toString también esté implementado en la clase movie si deseas una salida similar.

  4. Impresión de la lista: Después de ordenar la lista, puedes imprimirla directamente, ya que el método toString de cada objeto se llamará automáticamente.

Aquí tienes un ejemplo simplificado de cómo podría verse la impresión de la lista:

Collections.sort(lista);
for (Title item : lista) {
    System.out.println(item.toString());
}

Esto debería mostrar los títulos ordenados según el nombre de la película.

Espero que estos consejos te sean útiles. ¡Bons estudios!