1
resposta

[Projeto] Faça como eu fiz: ordenando com Comparable

package br.com.alura.screenmatch.modelos;

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);
    }

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

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

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

Oi, Vanderlei! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Sua implementação da interface Comparable ficou clara e bem organizada. O método compareTo utilizando o nome do título garante uma ordenação alfabética simples e eficaz para os objetos dessa classe.

Uma dica interessante para o futuro é usar a interface Comparator quando quiser ordenar por outros critérios além do nome. Por exemplo, para ordenar por ano de lançamento:


import java.util.Comparator;

public class ComparadorPorAno implements Comparator<Titulo> {
    public int compare(Titulo t1, Titulo t2) {
        return Integer.compare(t1.getAnoDeLancamento(), t2.getAnoDeLancamento());
    }
}

Esse código cria um comparador por ano de lançamento, útil quando quiser aplicar diferentes ordenações sem modificar a classe principal.

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