Galera,
Por gentileza vocês poderiam me ajudar com o seguinte questionamento? Eu estou ordenando uma ArrayList com o compareTo e utilizei o seguinte código para fazer isso.
Porém eu gostaria de saber como acontece esse ordenamento por debaixo dos panos...
@Override
public int compare(String o1, String o2) {
System.out.println(" String 1: " + o1 + " String 2: " + o2);
System.out.println(o1.compareToIgnoreCase(o2));
return o1.compareToIgnoreCase(o2);
}
Na primeira comparação o java vai comparar o verde com o marrom? Mas porque a String o1 não é o marrom e o2 é o verde, como resultado da primeira comparação ele vai retornar 9, que acredito que seja a diferença entre a letra M e o V, a partir disso ele continua comparando na sequencia? 1 com 2, depois 1 com 3, depois 1 com 4? Gostaria de saber melhor esse funcionamento interno, alguém poderia me ajudar a entender isso melhor?
Código completo da minha implementação.
package aulacarnaval4;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Principal {
public static void main(String[] args) {
List<String> listaCores = new ArrayList<String>();
listaCores.add("Marrom");
listaCores.add("Verde");
listaCores.add("Amarelo");
listaCores.add("Roxo");
listaCores.add("Cinza");
listaCores.add("Bege");
listaCores.add("Branco");
listaCores.add("Lilás");
System.out.println(listaCores);
OrdenarCoresComparator comparator = new OrdenarCoresComparator();
listaCores.sort(comparator);
System.out.println(listaCores);
}
}
class OrdenarCoresComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
System.out.println(" String 1: " + o1 + " String 2: " + o2);
System.out.println(o1.compareToIgnoreCase(o2));
return o1.compareToIgnoreCase(o2);
}
}
Desde já, agradeço a ajuda!