1
resposta

Resolvendo a questão do TreeSet

Fiz uma classe simples de Recibo com atributos e um construtor e uma segunda classe para gerar uma TreeSet de Recibos. Criei as referencias para a classe e as adicionei na TreeSet. Quando rodei o código, deu uma "ClassCastException". Vi que essa exception se dá pois a classe não implementa a interface "Comparable". Para não dá mais essa exception, a classe rebico implemente a interface Comparable e o método obrigatorio compareTo retorna a comparação emtre os valores do recibo, ficando dessa forma:

package br.com.alura.exercicio;

public class Recibo implements Comparable<Recibo>{

    private String nomeEmpresa;
    private double valorRecibo;

    public Recibo(String nomeEmpresa, int valorRecibo) {
        super();
        this.nomeEmpresa = nomeEmpresa;
        this.valorRecibo = valorRecibo;
    }

    public String getNomeEmpresa() {
        return nomeEmpresa;
    }

    public double getValorRecibo() {
        return valorRecibo;
    }

    @Override
    public int compareTo(Recibo rec) {

        return Double.compare(this.valorRecibo, rec.valorRecibo);
    }

    @Override
    public String toString() {

        return "Empresa: " + this.nomeEmpresa + ", valor: R$ " + this.valorRecibo;
    }

}
package br.com.alura.exercicio;

import java.util.Set;
import java.util.TreeSet;

public class GerandoRecibo {

    public static void main(String[] args) {

        Recibo rec1 = new Recibo("Idream", 330);
        Recibo rec2 = new Recibo("Idream", 250);
        Recibo rec3 = new Recibo("Idream", 450);

        Set<Recibo> recibos = new TreeSet<>();
        recibos.add(rec1);
        recibos.add(rec2);
        recibos.add(rec3);

        for (Recibo recibo : recibos) {
            System.out.println(recibo);
        }
    }
}
1 resposta

Olá Paulo, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Meus parabéns pela implementação do código e por compartilhá-lo com a comunidade do fórum Alura. Seu código atende bem a proposta ao implementar a interface Comparable<Recibo> para permitir a comparação dos objetos do tipo Recibo, resolvendo assim o erro de exceção ClassCastException.

Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software