1
resposta

return 1 / return -1 / return 0 ????

Olá pessoal, boa tarde.

Por gentileza, como este método consegue ordenar apenas usando 1, -1 e 0?

O que ocorre por trás?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi Ian!

Quem chama esse método compare é o próprio Java, por baixo dos panos, para comparar os elementos de uma lista e fazer a ordenação.

Ele basicamente vai percorrer a lista e chamar esse método passando dois elementos por vez, para saber qual dos dois vem primeiro. Mas como ele vai saber qual dos dois vem primeiro para trocar a ordem? Ele usa o retorno desse método compare, que é um número inteiro, seguindo a seguinte lógica:

  • Se for retornado zero, significa que os dois elementos são iguais e não precisa alterar a ordem na lista
  • Se for retornado um número negativo (geralmente -1), significa que o primeiro elemento passado como parâmetro deve vir antes do segundo elemento
  • Se for retornado um número positivo (geralmente 1), significa que o primeiro elemento passado como parâmetro deve vir depois do segundo elemento

Seria algo mais ou menos assim:

int resultado = lista.get(0).compare(lista.get(1));

if (resultado == 0) {
    // primeiro e segundo elementos sao equivalentes e por isso nao precisa trocar a ordem
} else if (resultado < 0) {
    // primeiro elemento deve vir antes do segundo
    //nao faz nada pois o primeiro elemento ja esta antes do segundo
} else {
    // primeiro elemento deve vir depois do segundo
    // troca a posicao do primeiro elemento com a do segundo
}

Claro, isso percorrendo cada elemento da lista e comparando um com o outro, até que a lista inteira esteja ordenada.