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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.
