Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre o método compare() utilizando 2 critérios de ordenação

Na video aula, foi utilizado apenas o atributo "numero da conta" como critério para ordenação da lista de contas. Levando em consideração que poderíamos querer que o numero da agência também fosse utilizado como critério no processo, ajustei o método compare() da seguinte forma:

    public int compare(Conta c1, Conta c2) {

        if (c1.getAgencia() < c2.getAgencia()) {

            return -1;

        } else {

            if (c1.getAgencia() > c2.getAgencia()) {

                return 1;

            } else {

                if (c1.getNumero() < c2.getNumero()) {

                    return -1;

                } else {

                    if (c1.getNumero() > c2.getNumero()) {

                        return 1;

                    } 

                }

            }

        }

        return 0;

    }

Apesar do código acima funcionar sem problemas aparentes (utilizei uma lista com contas de diferentes agencias e com diferentes números), minha duvida é referente a quantidade de if else que foi necessário para conseguir aplicar a lógica, uma vez que já foi dito em aulas anteriores que "muitos 'ifs' no código não é boa prática". Haveria alguma forma mais prática de fazer esse mesma ordenação sem ter que utilizar tantas condicionais para isso?

1 resposta
solução!

Oie André, tudo bem contigo?

Bem legal a maneira como você fez! Dá para dar uma reduzida da seguinte forma:

public int compare(Conta o1, Conta o2) {

         if (o1.getAgencia() < o2.getAgencia()) {
                return -1;

         } if (o1.getAgencia() > o2.getAgencia()) {
                return 1;

         } else {
                  return Integer.compare(o1.getNumero(), o2.getNumero());
         }
     }

Espero ter ajudado!

Se tiver qualquer outra dúvida estarei por aqui :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software