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 Comparator

Adjunto mi versión de solución usando la interfaz Comparator. Es una versión diferente a la solicitada en el ejercicio. Lo hice más que nada para practicar. Adicionalmente, no quise crear una nueva clase de comparación, sino que dentro del contenedor de ejecución mantuve la clase con la implementación del método compare.

package org.example;

import Models.Episodio;
import Models.Pelicula;
import Models.Serie;
import Models.Titulo;
import Services.FiltroRecomendacion;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class Main {

    private static ArrayList<Titulo> titulos = new ArrayList<>();

//    private static final Scanner entry = new Scanner(System.in).useDelimiter("\n");
    public static void main(String[] args) {
        //Instanciación películas y series
        Pelicula pelicula = new Pelicula();
        Serie serie = new Serie();
        Pelicula peliculaNueva = new Pelicula("matrix", 1999);
        Pelicula favorita = new Pelicula("El señor de los anillos", 2001);
        favorita.evalua(10);
        Pelicula otra = new Pelicula("John Wick", 2014);
        otra.evalua(9);
        Serie serieNueva = new Serie("La Casa de Papel", 2017);

        //seteo de parámetros objeto pelicula
        pelicula.setNombre("Encanto");
        pelicula.setFechaLanzamiento(2021);
        pelicula.setDuracionMinutos(120);
        pelicula.setDirector("Alfredo");

        //Evaluación película encanto
        pelicula.evalua(4.6);
        pelicula.evalua(4.9);
        pelicula.evalua(4.4);

        //Seteo parametros serie
        serie.setNombre("lucifer");
        serie.setFechaLanzamiento(2013);
        serie.setTemporada(6);
        serie.setMinutosPorEpisodio(50);
        serie.setEpisodiosPorTemporada(13);
        serie.setDuracionMinutos(serie.getDuracionMinutos());

        //Evaluación serie lucifer
        serie.evalua(5.6);
        serie.evalua(4.9);
        serie.evalua(9.8);

        FiltroRecomendacion filtroRecomendacion = new FiltroRecomendacion(pelicula);
        filtroRecomendacion.filtrar();

        Episodio episodio = new Episodio();
        episodio.setNombre("A devil of my word");
        episodio.setNumero(3);
        episodio.setSerie(serie);
        episodio.setTotalVisualizaciones(1450);
        FiltroRecomendacion filtroSerie = new FiltroRecomendacion(episodio);
        filtroSerie.filtrar();

        //Agregar lista
        titulos.add(pelicula); titulos.add(serie); titulos.add(peliculaNueva);
        titulos.add(favorita); titulos.add(otra); titulos.add(serieNueva);

        //Impresiones por pantalla de los objetos
        System.out.println("Detalles película: \n" + pelicula.toString());
        System.out.println("Detalles serie: \n" + serie.toString());
        titulos.stream().forEach(titulo -> {
            if(titulo instanceof Pelicula movie && movie.getClasificacion() > 2){
                System.out.println(movie.getClasificacion());
            }
        });

        var listaArtistas = new ArrayList<String>();
        listaArtistas.add("Penelope cruz");
        listaArtistas.add("Brad Pitt");
        listaArtistas.add("Celia Cruz");
        listaArtistas.add("Antonio Banderas");
        Collections.sort(listaArtistas);
        System.out.println(listaArtistas);
        Collections.sort(titulos);
        System.out.println(titulos);
        Comparator<Titulo> comparadorFecha = new Comparator<Titulo>() {
            @Override
            public int compare(Titulo o1, Titulo o2) {
                return o1.getFechaLanzamiento() > o2.getFechaLanzamiento() ? 1 :
                        o1.getFechaLanzamiento() < o2.getFechaLanzamiento() ? -1 :
                                0;
            }
        };
        Collections.sort(titulos, comparadorFecha);
        System.out.println(titulos);
    }
}
1 respuesta

Hola Alejandro, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

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!