1
resposta

[Sugestão] Faça como eu fiz: ordenando com Comparable

CLASSE TITULO

public class Title implements Comparable<Title> {
//codigo omitido
@Override //comparando os titulos pelo nome para ordenar alfabeticamente
    public int compareTo(Title otherTitle) {
        return this.getNome().compareTo(otherTitle.getNome());
    }
}

MAIN COM LISTAS

import br.com.alura.screenmatch.modelos.Episode;
import br.com.alura.screenmatch.modelos.Movie;
import br.com.alura.screenmatch.modelos.Serie;
import br.com.alura.screenmatch.modelos.Title;

import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;

public class MainWithList {
    public static void main(String[] args){
        Movie myMovie = new Movie("La la land", 2016);
        myMovie.setTempoDeDuracaoMinutos(128);
        myMovie.setIncluidoNoPlano(true);
        myMovie.avaliaTitle(10);

        Movie movieBee = new Movie("Bee Movie", 2007);
        movieBee.setTempoDeDuracaoMinutos(91);
        movieBee.setIncluidoNoPlano(true);
        movieBee.avaliaTitle(8);

        Serie BreakingBad = new Serie("Breaking Bad",2008);
        BreakingBad.setTemporadas(5);
        BreakingBad.setEpisodiosPorTemporada(13);
        BreakingBad.setMinutosPorEpisodio(47);
        BreakingBad.avaliaTitle(10);

        List<Title> WatchedList = new LinkedList<>();
        WatchedList.add(myMovie);
        WatchedList.add(movieBee);
        WatchedList.add(BreakingBad);
        WatchedList.forEach(Title -> System.out.println("FILMAÇO"));

        for (Title title: WatchedList) {

            System.out.println(title.getNome());
            switch (title) { // verifica se o titulo na lista É filme, serie ou episodio e ate o que n é
                case Movie movie -> System.out.println("Classificação: " + movie.getClassificacao());
                case Episode episode -> System.out.println("Classificação: " + episode.getClassificacao());
                case Serie serie -> System.out.println("Classificação: " + serie.getClassificacao());
                default -> System.out.println("não é possivel obter a classificação de: " + title.getNome());
            } //IDE recomendou usar switch case, eu não sabia que a sintaxe com expressão lambda era assim, mas aprendi agrKKK.

        }

        List<String> SearchByArtist = new LinkedList<>();
        SearchByArtist.add("Giancarlo Esposito");
        SearchByArtist.add("Bod Odendirk");
        SearchByArtist.add("Rhea Seehorn");
        SearchByArtist.add("Jonathan Banks");
        SearchByArtist.add("Ryan Gosling");
        SearchByArtist.add("Emma Stone");
        SearchByArtist.add("Jerry Seinfeld");
        SearchByArtist.add("Chris Rock");

        Collections.sort(SearchByArtist);
        System.out.println("Ordenando a lista de artistas alfabeticamente..");
        System.out.println(SearchByArtist);

        Collections.sort(WatchedList);
        System.out.println("Ordenando a lista de titulos assistidos alfabeticamente");
        System.out.println(WatchedList);

        WatchedList.sort(Comparator.comparing(Title::getAnoDeLancamento));//COMPARA E ORDENA POR ANO DE LANÇAMENTO
        System.out.println("Ordenando agora por ano..");
        System.out.println(WatchedList);
    }
}
1 resposta

Olá, Gabriel! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso da interface Comparable para ordenar objetos com Java, utilizou muito bem o recurso de Collections.sort para organizar listas e ainda compreendeu a importância de aplicar Comparator para ordenar por diferentes critérios, como ano de lançamento.

Uma dica interessante para o futuro é aplicar Comparator com múltiplos critérios, permitindo ordenar por mais de um atributo. Assim:

WatchedList.sort(Comparator.comparing(Title::getAnoDeLancamento).thenComparing(Title::getNome));

Isso faz com que os títulos sejam ordenados primeiro pelo ano de lançamento e em caso de empate, pelo nome. Garantindo uma ordenação mais refinada.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!