Essa interface Comparable foi uma novidade gostei bastante. tive uma dúvida no quando vc implementou o metodo comparableTo, daria pra usar this.nome daria pra usar o equalis pra comparar com o parametro setado no metodo?
Essa interface Comparable foi uma novidade gostei bastante. tive uma dúvida no quando vc implementou o metodo comparableTo, daria pra usar this.nome daria pra usar o equalis pra comparar com o parametro setado no metodo?
Quando você implementa a interface Comparable em Java, geralmente o método que você precisa sobrescrever é o compareTo, não comparableTo. Esse método é usado para definir a ordem natural de objetos de uma classe. Por exemplo, se você estiver comparando objetos baseados em um atributo nome, a implementação típica envolveria comparação lexicográfica entre as strings.
A dúvida sobre o uso do método equals para comparar this.nome com o nome do outro objeto no método compareTo é interessante, mas o propósito do equals é um pouco diferente. O método equals é usado para verificar se dois objetos são exatamente iguais, ou seja, se têm o mesmo estado. Em contraste, compareTo é usado para comparar objetos para determinar a ordem entre eles, não apenas se são iguais.
Aqui está um exemplo básico de como você pode implementar o compareTo para comparar nomes em uma classe:
public class Pessoa implements Comparable<Pessoa> {
private String nome;
public Pessoa(String nome) {
this.nome = nome;
}
@Override
public int compareTo(Pessoa outraPessoa) {
return this.nome.compareTo(outraPessoa.nome);
}
}
No código acima, compareTo usa o método compareTo de String, que compara lexicograficamente as strings. Se você usasse equals, poderia apenas determinar se os nomes são iguais ou não, o que retornaria um booleano, e não um valor inteiro como esperado por compareTo. O compareTo deve retornar:
this deve vir antes de outraPessoa.this e outraPessoa são consideradas iguais na ordenação.this deve vir após outraPessoa.Portanto, usar equals dentro de compareTo não é adequado para determinar a ordem, pois ele não fornece informação suficiente para dizer qual objeto vem antes ou depois, apenas se eles são iguais ou não.
