Bom dia galera, não se assuntem com o tamanho do código, a dúvida é simples.
import java.util.*;
public class Exe3CLassificando2 implements Comparable<Exe3CLassificando2> {
String nome;
Exe3CLassificando2(String nome) {
this.nome = nome;
}
public String toString() {
return nome;
}
public int compareTo(Exe3CLassificando2 exe) {
int i = nome.compareTo(exe.nome);
System.out.print(i + " ");
return i;
}
public static void main(String[] args) {
Exe3CLassificando2 a = new Exe3CLassificando2("z");
Exe3CLassificando2 a1 = new Exe3CLassificando2("a");
Exe3CLassificando2 a2 = new Exe3CLassificando2("x");
Exe3CLassificando2 a3 = new Exe3CLassificando2("c");
Exe3CLassificando2 a4 = new Exe3CLassificando2("b");
List<Exe3CLassificando2> lista = new ArrayList<Exe3CLassificando2>();
lista.add(a);
lista.add(a1);
lista.add(a2);
lista.add(a3);
lista.add(a4);
Collections.sort(lista);
System.out.println("\n");
System.out.println("\n");
System.out.println(lista);
}
}
Eu já postei aqui uma vez essa dúvida, porém não consegui entender ainda como o método compareTo funfa !
Eu sei que ao classificar, o sort() chama o compareTo, e que da forma que fiz fica o nomeObjetoAtual.compareTo(objeto parâmetro)
porém não sei que é o objeto atual. E se esse muda conforme as chamadas de short() a compareTo();
Ele pega o primeiro objeto adicionado na lista e compara com o segundo?
ai o segundo passa a ser o objeto atual ?
depois pega o terceiro objeto na lista e compara com o 2º e com o 1° e aloca na lista ?
Escrevi bastânte para tentar mostrar o que não estou entendendo. Mais acho que a dúvida é simples.
A saída do código é a seguinte:
25 2 -23 23 21 -2 24 22 1 -1
[a, b, c, x, z]
CompareTo não retorna só:
-1 this < other
0 this == other
1 this > other
Grato a todos que ajudarem !