1
resposta

[Projeto] Ordenando com Comparable

TÌTULO

package br.com.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 avalia(double nota){
    somaDasAvaliacoes += nota;
    totalDeAvaliacoes++;
}

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

@Override
public int compareTo(Titulo outro) {
    return this.nome.compareTo(outro.nome);
}
@Override
public String toString() {
    return nome + " (" + anoDeLancamento + ")";
}
}

**PRINCIPAL COM LISTAS **

package br.com.screenmatch.principal;

import br.com.screenmatch.modelos.Titulo;

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

public class PrincipalComListas {
public static void main(String[] args) {

    Titulo t1 = new Titulo("Interestelar", 2014);
    Titulo t2 = new Titulo("Avatar", 2009);
    Titulo t3 = new Titulo("O Poderoso Chefão", 1972);

    t1.avalia(9);
    t1.avalia(10);

    t2.avalia(8);
    t2.avalia(9);

    t3.avalia(10);
    t3.avalia(10);

    ArrayList<Titulo> lista = new ArrayList<>();
    lista.add(t1);
    lista.add(t2);
    lista.add(t3);

    Collections.sort(lista);
    System.out.println("Ordenado por nome:");
    System.out.println(lista);

    lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));
    System.out.println("\nOrdenado por ano:");
    System.out.println(lista);

    lista.sort(Comparator.comparing(Titulo::pegaMedia).reversed());
    System.out.println("\nOrdenado por nota:");
    System.out.println(lista);

    lista.sort(Comparator.comparing(Titulo::getDuracaoEmMinutos));
    System.out.println("\nOrdenado por duração:");
    System.out.println(lista);
}
}
1 resposta

Olá, Giulia, como vai?

A implementação da interface Comparable na classe Titulo está correta e segue exatamente a lógica de comparação por nomes utilizando o método compareTo da classe String. A sobrescrita do método toString também foi bem aplicada, permitindo que a exibição dos objetos na lista seja legível e organizada.

Parabéns pelo excelente desempenho e por compartilhar sua evolução com a comunidade. Continue praticando e postando seus projetos.

O fórum segue à disposição para qualquer dúvida que surgir em sua jornada.

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