Se eu implemento Comparable e sobreescrevo compareTo dessa forma tudo bem…
// aqui eu sei que ele vai comparar usando o compareTo da classe Integer pq "num" é um Integer.
public int compareTo(TestArrayList o) {
// TODO Auto-generated method stub
return this.num.compareTo(o.num);
E se eu fizer dessa forma o que acontece na comparaçao, nada né?
public int compareTo(TestArrayList o) {
// TODO Auto-generated method stub
return 5;
Tem outra maneira de usar compareTo e compare, sem usar compareTo das classes Wrappers e String?
Você entendeu o que faz compareTo? Ele tem de voltar um valor positivo (digamos +1) se o valor do objeto é maior que o valor a ser comparado, um valor negativo (digamos -1) se o valor do objeto é menor que o valor a ser comparado, e 0 se o valor é igual ao valor comparado.
evertonsilvagomesjav
Sim eu sei, mas no caso se eu sobreescrever dessa forma:
public int compareTo(TestArrayList o) {
// TODO Auto-generated method stub
return 5
ele sempre vai retorna 5, daí ele nao vai estar comparando nada? Pq nem sequer ele esta usando o objeto “o” nem o this, pra fazer essa comparaçao e retornar positivo, negativo ou 0 se for igual…
E
entanglement
Pois é, se sempre retornar 5, então você implementou incorretamente compareTo.
Ele não é que “não faz nada”; ele está retornando um resultado incorreto se o objeto passado como parâmetro for < ou == ao objeto. Se for >, então está retornando um valor > 0, e só nesse caso ele volta um valor correto (é igual à história do relógio parado - ele está certo duas vezes por dia, e errado no resto do dia).
mario.fts
O que vc fez é que o objeto sempre será “maior” que o outro objeto que vc estiver comparando. De acordo com o contrato do método, está errado. nada impede vc de fazer isso, mas não deixa de ser errado. é como sobreescrever o equals e retornar true ou false sempre.
evertonsilvagomesjav
kkkkkkk, entendi então vai retornar um valor correto somente se o objeto que chamou compareTo for maior, mas e se por um acaso for menor? Acontece erro em tempo de execução ou nada acontece?
E
entanglement
Não retorna erro nenhum, mas coisas que você esperaria que funcionassem (como ordenação com Collections.sort) não vão funcionar direito. OK?
mario.fts
se o objeto for menor, ele vai continuar falando que é maior. ai a ordem vai estar errada no final.
evertonsilvagomesjav
Ahh sim entendido entao, obrigado entenglament e mario.