Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

comparação invertida

Gostaria de entender como funciona a forma de comparação invertida que vi no exercício da aula.

@Override
public int compareTo(Conta outra) {
    if (this.saldo < outra.saldo) {
        return 1;
    } else if (this.saldo > outra.saldo) {
        return -1;
    } else {
        return 0;
    }
}
3 respostas

Bom dia, Andre! Tudo bem?

No exemplo que você mostrou, temos um método compareTo() que retorna um valor inteiro para indicar a ordem de comparação entre duas contas. Se o saldo da conta atual for menor que o saldo da outra conta, o método retorna 1. Se o saldo da conta atual for maior que o saldo da outra conta, o método retorna -1. E se os saldos forem iguais, o método retorna 0.

Essa forma de comparação invertida é útil quando queremos ordenar uma lista em ordem decrescente, por exemplo. No caso do exemplo, se usarmos esse método de comparação para ordenar uma lista de contas, as contas com saldos maiores ficarão no início da lista.

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, estarei à disposição.

Abraços e bons estudos!

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

Bom dia Armano, tudo bem.

Gostaria de entender melhor esse retorno. Como ele faz com que a ordenação se dê de uma maneira ou de outra.

Desde já agradeço a atenção.

solução!

Opa Andre, peço desculpa pela demora em respondê-lo.

Aqui está como a ordenação funciona:

  1. Para cada par de objetos que você deseja comparar, a função compareTo é chamada. Ela compara o saldo da conta atual (this.saldo) com o saldo da outra conta (outra.saldo).

  2. Se o saldo da conta atual for menor que o saldo da outra conta, a função compareTo retorna 1. Isso indica que a conta atual deve aparecer após a outra conta na ordenação, criando uma ordem decrescente. Por exemplo, se a conta A tiver um saldo de 1000 e a conta B tiver um saldo de 2000, a função retornará 1, indicando que a conta B deve aparecer antes da conta A na ordenação.

  3. Se o saldo da conta atual for maior que o saldo da outra conta, a função compareTo retorna -1. Isso indica que a conta atual deve aparecer antes da outra conta na ordenação. No exemplo anterior, se a conta A tiver um saldo de 2000 e a conta B tiver um saldo de 1000, a função retornará -1, indicando que a conta A deve aparecer antes da conta B na ordenação.

  4. Se os saldos das duas contas forem iguais, a função compareTo retorna 0. Isso significa que as duas contas são equivalentes em termos de ordenação e devem aparecer na mesma posição relativa na ordenação.

Espero que dessa forma você entenda melhor com funciona o retorno dessa função.