1
resposta

Ordenando com Comparable

Modificando as Classes

// Titulo.java
public class Titulo implements Comparable<Titulo> { // Implementa Comparable
    private String nome;

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

    public String getNome() {
        return nome;
    }

    public void exibirInformacoes() {
        System.out.println("Título: " + nome);
    }

    // Implementação do método compareTo para ordenar por nome
    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.nome.compareTo(outroTitulo.nome);
    }
}
// Filme.java (Permanece igual)
public class Filme extends Titulo {
    private int duracaoEmMinutos;

    public Filme(String nome, int duracaoEmMinutos) {
        super(nome);
        this.duracaoEmMinutos = duracaoEmMinutos;
    }

    public int getDuracaoEmMinutos() {
        return duracaoEmMinutos;
    }

    @Override
    public void exibirInformacoes() {
        System.out.println("Filme: " + getNome() + " (" + duracaoEmMinutos + " min)");
    }
}
// Serie.java (Permanece igual)
public class Serie extends Titulo {
    private int temporadas;
    private int episodiosPorTemporada;

    public Serie(String nome, int temporadas, int episodiosPorTemporada) {
        super(nome);
        this.temporadas = temporadas;
        this.episodiosPorTemporada = episodiosPorTemporada;
    }

    public int getTemporadas() {
        return temporadas;
    }

    public int getEpisodiosPorTemporada() {
        return episodiosPorTemporada;
    }

    @Override
    public void exibirInformacoes() {
        System.out.println("Série: " + getNome() + " (" + temporadas + " temporadas, " + episodiosPorTemporada + " episódios por temporada)");
    }
}

Classe Main para Testar a Ordenação

import java.util.ArrayList;
import java.util.Collections; // Importe a classe Collections

public class Main {
    public static void main(String[] args) {
        Filme filme1 = new Filme("Matrix", 136);
        Filme filme2 = new Filme("O Senhor dos Anéis: A Sociedade do Anel", 178);
        Serie serie1 = new Serie("Stranger Things", 4, 9);
        Serie serie2 = new Serie("Breaking Bad", 5, 10);
        Filme filme3 = new Filme("Avatar", 162); // Adicionando mais um para variar a ordem

        ArrayList<Titulo> listaDeTitulos = new ArrayList<>();
        listaDeTitulos.add(filme1);
        listaDeTitulos.add(serie1);
        listaDeTitulos.add(filme2);
        listaDeTitulos.add(serie2);
        listaDeTitulos.add(filme3);

        System.out.println("--- Lista de Títulos Original ---");
        for (Titulo item : listaDeTitulos) {
            item.exibirInformacoes();
        }

        // Ordenando a lista de títulos
        // Collections.sort() usa o método compareTo implementado na classe Titulo
        Collections.sort(listaDeTitulos);

        System.out.println("\n--- Lista de Títulos Ordenada por Nome ---");
        for (Titulo item : listaDeTitulos) {
            item.exibirInformacoes();
        }
    }
}
1 resposta

Oii, Daiane!

Obrigada por compartilhar.

A sua implementação do Comparable ficou muito bem estruturada! O uso do compareTo na classe Titulo mostra domínio da interface e permite uma ordenação natural da lista, o que é ótimo para deixar o código mais limpo e reutilizável em diferentes contextos.

Continue firme nos estudos.

Se quiser continuar se desafiando:
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!