1
resposta

Como o Compare consegue classificar mais de uma referência

public int compare(Conta c1, Conta c2) {

    String nomeC1 = c1.getTitular().getNome(); 
    String nomeC2 = c2.getTitular().getNome();

    return nomeC1.compareTo(nomeC2); 



}

Na minha classe main instanciei quatro objetos, e na Classe compare passei apenas o C1 e o C2. Como o compare consegue pegar todas minhas referências e ordenar por ordem alfabético, sendo que eu informei apenas a referência c1 2 c2.

1 resposta

Fala Luciano, tudo bem?

O segredo dessa ordenação está nessa linha:

lista.sort(comparator);

Para cada elemento da lista será executado o objeto informado como argumento (que no caso é objeto "comparator") para classificar se o elemento atual vem antes ou depois do próximo elemento. Na prática, o método .sort já está implementado na linguagem Java. Ou seja, o que a gente precisa desenvolver é uma classe que implemente (explicitamente ou implicitamente) a interface Comparator que o método .sort espera :)

Dica: prossiga com os estudos que com o tempo tudo vai fazer sentido. Quando você chegar nesse curso: https://cursos.alura.com.br/course/java8-lambdas vai ter uma visão de como funciona esse método sort e vai entender mais sobre as interfaces funcionais do Java 8 :)

Por curiosidade, o código do método .sort que pode ser encontrado dentro do JDK é esse aqui:

    default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();
        Arrays.sort(a, (Comparator) c);
        ListIterator<E> i = this.listIterator();
        for (Object e : a) {
            i.next();
            i.set((E) e);
        }
    }

Abraço!