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

hice lo que hicieron

package com.aluracursos.screenmatch.model;
import java.time.DateTimeException;
import java.time.LocalDate;

public class Episodio {
    private Integer temporada;
    private String titulo;
    private Double numEpisodio;
    private Double evaluacion;
    private LocalDate fecha_lanzamiento;

    public Episodio(Integer numero, DatosEpisodio d){
        this.temporada = numero;
        this.titulo = d.titulo();
        this.numEpisodio = d.numEpi().doubleValue();
        try {
            this.evaluacion = Double.valueOf(d.evalua());
        }catch (NumberFormatException e){
            this.evaluacion = 0.0;
        }
        try {
            this.fecha_lanzamiento = LocalDate.parse(d.fechaLanza());
        }catch (DateTimeException e){
            this.fecha_lanzamiento = null;
        }

    }

    public Double getEvaluacion() {
        return evaluacion;
    }

    public void setEvaluacion(Double evaluacion) {
        this.evaluacion = evaluacion;
    }

    public Integer getTemporada() {
        return temporada;
    }

    public void setTemporada(Integer temporada) {
        this.temporada = temporada;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public Double getNumEpisodio() {
        return numEpisodio;
    }

    public void setNumEpisodio(Double numEpisodio) {
        this.numEpisodio = numEpisodio;
    }

    public LocalDate getFecha_lanzamiento() {
        return fecha_lanzamiento;
    }

    public void setFecha_lanzamiento(LocalDate fecha_lanzamiento) {
        this.fecha_lanzamiento = fecha_lanzamiento;
    }

    @Override
    public String toString() {
        return
                "temporada=" + temporada +
                ", titulo='" + titulo + '\'' +
                ", numEpisodio=" + numEpisodio +
                ", evaluacion=" + evaluacion +
                ", fecha_lanzamiento=" + fecha_lanzamiento;

    }
}
1 respuesta

Hola Jose, espero que estés bien

Parece que estás trabajando en una tarea donde necesitas manipular datos de episodios usando streams en Java. A partir del código que has compartido, ya tienes una clase Episodio que parece estar bien estructurada para manejar la información básica de un episodio.

Para cumplir con los requisitos de tu actividad, aquí tienes algunos pasos que podrías seguir:

  1. Crear una lista de episodios: Asegúrate de que estás trabajando con una lista de objetos Episodio. Puedes crear una lista así:

    List<Episodio> episodios = new ArrayList<>();
    // Añade episodios a la lista
    
  2. Imprimir los 5 mejores episodios: Puedes usar streams para ordenar los episodios por evaluación y luego imprimir los 5 mejores:

    episodios.stream()
             .sorted(Comparator.comparing(Episodio::getEvaluacion).reversed())
             .limit(5)
             .forEach(System.out::println);
    
  3. Buscar episodios a partir de un año específico: Puedes filtrar los episodios por su fecha de lanzamiento:

    int añoEspecifico = 2020; // Cambia esto al año que desees
    episodios.stream()
             .filter(e -> e.getFecha_lanzamiento() != null && e.getFecha_lanzamiento().getYear() >= añoEspecifico)
             .forEach(System.out::println);
    

Asegúrate de que los métodos getEvaluacion y getFecha_lanzamiento están correctamente implementados en tu clase Episodio, lo cual parece estar bien en el código que compartiste.

Espero que estos ejemplos te ayuden a avanzar en tu tarea. ¡Bons estudios!