1
resposta

[Sugestão] Desafio: Ordenação de compras com cartão de crédito

Segue nova opção de sobrescrita do método compareTo pra fazer a ordenação de compras pelo valor, um pouco diferente do exemplo dado no curso.

public class Compra implements Comparable<Compra>{
    private String descricao;
    private double valor;

    public Compra(String descricao, double valor) {
        this.descricao = descricao;
        this.valor = valor;
    }

    public String getDescricao() {
        return descricao;
    }

    public double getValor() {
        return valor;
    }

    @Override
    public String toString() {
        return "Compra: descricao = " + descricao +
                " valor = " + valor;
    }

    @Override
    public int compareTo(Compra outraCompra) {
        return Double.compare(this.valor, outraCompra.valor);
    }
}
1 resposta

Oi, Matheus! Como vai?

Seu método compareTo ficou direto e usa Double.compare, o que torna a comparação mais segura. Gostei de como você organizou os atributos e manteve o código limpo.

Uma dica interessante para o futuro é usar o método equals quando quiser comparar objetos pelo mesmo valor. Veja este exemplo:


public boolean equals(Object obj) {
    if(!(obj instanceof Compra)) return false;
    Compra outra = (Compra) obj;
    return this.valor == outra.valor;
}

O método equals verifica se dois objetos representam a mesma informação comparando apenas o valor.

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