2
respostas

Ordenando com Comparable

//Titulo

public class Titulo implements Comparable<Titulo> {
    private String nome;
    private int anoDeLancamento;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacoes;
    private int duracaoEmMinutos;

    public Titulo(String nome, int anoDeLancamento) {
        this.nome = nome;
        this.anoDeLancamento = anoDeLancamento;
    }

    public String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public boolean isIncluidoNoPlano() {
        return incluidoNoPlano;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    public int getTotalDeAvaliacoes() {
        return totalDeAvaliacoes;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    public void setIncluidoNoPlano(boolean incluidoNoPlano) {
        this.incluidoNoPlano = incluidoNoPlano;
    }

    public void setDuracaoEmMinutos(int duracaoEmMinutos) {
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public void exibeFichaTecnica(){
        System.out.println("Nome do filme: " + nome);
        System.out.println("Ano de lançamento: " + anoDeLancamento);
        System.out.println("incluido no plano: " + incluidoNoPlano);
        System.out.println("Duração em minutos:" + duracaoEmMinutos);

    }

    public void avalia(double nota){
        somaDasAvaliacoes += nota;
        totalDeAvaliacoes++;
    }

    public double pegaMedia(){
        return somaDasAvaliacoes / totalDeAvaliacoes;
    }

    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.getNome().compareTo(outroTitulo.getNome());
        }
        
}

// PrincipalComListas

package br.com.alura.screenmatch.principal;

import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
import br.com.alura.screenmatch.modelos.Titulo;

public class PrincipalComListas {
    public static void main (String []args) {
        Filme meuFilme = new Filme("Duelo de titãs", 1999);
        meuFilme.avalia(9);
        Filme outroFilme = new Filme("Avatar", 2023);
        outroFilme.avalia(8.5);
        var filmeDoHenrique = new Filme("Top Gun", 2022);
        filmeDoHenrique.avalia(10);
        Serie chosen = new Serie("The Chosen", 2018);

        Filme f1 = filmeDoHenrique;

        List<Titulo> lista = new LinkedList<>();
        lista.add(filmeDoHenrique);
        lista.add(meuFilme);
        lista.add(outroFilme);
        lista.add(chosen);

        // Ordenando a lista
        Collections.sort(lista);

        for (Titulo item: lista) {
            System.out.println( item.getNome());
            if (item instanceof Filme) {
                Filme filme = (Filme) item;
                if (item instanceof Filme filme && filme.getClassificacao() > 2) {
                    System.out.println("Classificação " + filme.getClassificacao());
                }
            }
            ArrayList<String> buscarArtista = new ArrayList<>();
            buscarArtista.add("Denzel Washington");
            buscarArtista.add("Jake Sully");
            buscarArtista.add("Tom Cruise");
            buscarArtista.add("Jonathan Roumie");

            Collections.sort(buscarArtista);
            System.out.println("Depois da ordenação ");
            System.out.println(buscarArtista);
            System.out.println("Lista de titulos orednados: ");
            Collections.sort(lista);
            System.out.println(lista);
            lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));
            System.out.println("Ordenando por ano: ");
            System.out.println(lista);
        }
    }
2 respostas

//Serie

public class Serie extends Titulo {
    private int temporadas;
    private boolean ativa;
    private int episodiosPorTemporada;
    private int minutosPorEpisodio;

    public Serie(String nome, int anoDeLancamento) {
        super(nome, anoDeLancamento);
    }

    public int getTemporadas() {
        return temporadas;
    }

    public void setTemporadas(int temporadas) {
        this.temporadas = temporadas;
    }

    public boolean isAtiva() {
        return ativa;
    }

    public void setAtiva(boolean ativa) {
        this.ativa = ativa;
    }

    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }

    public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
        this.episodiosPorTemporada = episodiosPorTemporada;
    }

    public int getMinutosPorEpisodio() {
        return minutosPorEpisodio;
    }
    
    public void setMinutosPorEpisodio(int minutosPorEpisodio) {
        this.minutosPorEpisodio = minutosPorEpisodio;
    }

    @Override
    public int getDuracaoEmMinutos() {
        return temporadas * episodiosPorTemporada * minutosPorEpisodio;
    }
    @Override
    public String toString() {
        return "Serie: " + this.getNome() + "(" + this.getAnoDeLancamento() + ")";
    }
}

Olá Henrique, tudo bem com você?

Meus parabéns pela conclusão da atividade do desafio seu código está bem estruturado, fico feliz em ver sua participação ativa no fórum da Alura. Continue com esse empenho por colocar em prática o que está aprendendo.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!