1
resposta

[Sugestão] ordenando com Comparable

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;

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

public class PrincipalComListas {
    public static void main(String[] args) {
        // Criação dos objetos de mídia
        List<Titulo> listaDeTitulos = criarListaDeTitulos();

        // Exibição dos títulos
        exibirTitulos(listaDeTitulos);

        // Manipulação de uma lista de artistas
        manipularListaDeArtistas();

        // Ordenação da lista de títulos
        ordenarListaDeTitulos(listaDeTitulos);
    }

    /**
     * Cria e retorna uma lista com os títulos inicializados
     */
    private static List<Titulo> criarListaDeTitulos() {
        // Filmes
        Filme meuFilme = new Filme("Chungking Express", 1994);
        meuFilme.avalia(10);

        Filme outroFilme = new Filme("Pulp Fiction", 1994);
        outroFilme.avalia(10);

        Filme filmeDoCarlos = new Filme("Ainda Estou Aqui", 2024);
        filmeDoCarlos.avalia(10);

        // Séries
        Serie breakingBad = new Serie("Breaking Bad", 2008);

        // Adicionando à lista
        List<Titulo> lista = new ArrayList<>();
        lista.add(filmeDoCarlos);
        lista.add(meuFilme);
        lista.add(outroFilme);
        lista.add(breakingBad);

        return lista;
    }

    /**
     * Exibe os títulos da lista, incluindo classificação para filmes
     */
    private static void exibirTitulos(List<Titulo> lista) {
        System.out.println("\n***** SAÍDA Utilizando o for-each ***** ");
        for (Titulo item : lista) {
            System.out.println(item.getNome());
            if (item instanceof Filme) {
                Filme filme = (Filme) item;
                if (filme.getClassificacao() > 2) {
                    System.out.println("Classificação: " + filme.getClassificacao());
                }
            }
        }
    }

    /**
     * Cria, manipula e exibe uma lista de artistas
     */
    private static void manipularListaDeArtistas() {
        List<String> buscaPorArtista = new ArrayList<>();
        buscaPorArtista.add("Adam Sandler");
        buscaPorArtista.add("Paulo");
        buscaPorArtista.add("Jacqueline");

        System.out.println(buscaPorArtista);

        Collections.sort(buscaPorArtista);
        System.out.println("Depois da ordenação: ");
        System.out.println(buscaPorArtista);
    }

    /**
     * Ordena e exibe a lista de títulos de diferentes maneiras
     */
    private static void ordenarListaDeTitulos(List<Titulo> lista) {
        System.out.println("\nLista de Títulos Ordenados (ordem natural - por nome):");
        Collections.sort(lista);
        System.out.println(lista);

        lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));
        System.out.println("\nOrdenando por ano de lançamento:");
        System.out.println(lista);
    }
}
1 resposta

Parabéns! Ficou muito bom!