1
resposta

DÚVIDA SOBRE O COMPARE

Olá ! No vídeo o professor quando vai fazer a ordenação escreve o seguinte:

 lista.sort(comparator);

Mas pq ele chama diretamente a variável de referência para numeroDaContaComparator ? Não deveria ser o correto:

lista.sort(comparator.compare());

Já que o método comparator é que vai fazer a lógica de ordenação ? Outra dúvida, o método compare tem dois parâmetros que são Conta c1 e Conta C2, pq em nenhum momento é passado parâmetro ao chamar esse método ?

1 resposta

Olá Douglas, tudo bem com voce?

Peço desculpas pela demora em obter retorno.

O método sort() de uma lista recebe um Comparator<> como parâmetro e utiliza esse Comparator por baixo dos panos para fazer as comparações e definir qual é a ordenação da lista. Sendo assim, o método sort() precisa apenas do Comparator e em algum lugar dentro dele vai fazer a chamada comparator.compare(), e fazer a ordenação de uma maneira muito parecida com a sugerida por você.

Como o Java se trata de uma linguagem de alto nível, muitas coisas de implementação ficam abstraídas para que nós programadores não precisemos nos preocupar com os seus detalhes de implementação, mas sim com os seus comportamentos. Ao ler lista.sort(comparator), podemos interpretar da segunda maneira: ordene a lista lista utilizando o critério de ordenação comparator. Essa característica das linguagens de alto nível, aumentam o nível de legibilidade do código.

Outro ponto a se destacar, é que a construção do método sort() é muito interessante porque favorece a utilização de um mesmo código com diferentes critérios de comparação, para isso, basta que um Comparator tenha uma implementação diferente de outro, e que seja passado como parâmetro para o método sort().

Como o método é chamado a partir de uma lista, internamente o método é implementado para conseguir utilizar o método compare(c1, c2) e saber quais contas ele deve comparar a fim de garantir a ordenação com base no critério definido.

Um exercício bastante legal de se fazer quando surgir esse tipo de curiosidade é clicar em cima do método (no caso o sort()) com a tecla CTRL pressionada, que vai te levar para a implementação da linguagem e possibilitar entender mais a fundo como funcionam as coisas por baixo dos panos em Java!

Fico à disposição em caso de dúvidas.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!