1
resposta

Ordenar por String

Boa Tarde!

Criei uma lista, e ordenei pelo metodo comparaTo() , mas nao entendi de que forma ele ordenou as Strings nomes, que criterio ele utilizou

Conta cc1 = new ContaCorrente(24); Cliente clienteCC1 = new Cliente(); clienteCC1.setnome("Nico"); cc1.settitular(clienteCC1); cc1.depositar(333.0);

 Conta cc2 = new ContaPoupanca(23);
 Cliente clienteCC2 = new Cliente();
 clienteCC2.setnome("ana");
 cc2.settitular(clienteCC2);
 cc2.depositar(444.0);

 Conta cc3 = new ContaCorrente(21);
 Cliente clienteCC3 = new Cliente();
 clienteCC3.setnome("Paulo");
 cc3.settitular(clienteCC3);
 cc3.depositar(111.0);

 Conta cc4 = new ContaPoupanca(22);
 Cliente clienteCC4 = new Cliente();
 clienteCC4.setnome("Ana");
 cc4.settitular(clienteCC4);
 cc4.depositar(222.0);


 List<Conta> lista = new ArrayList<>();
 lista.add(cc1);
 lista.add(cc2);
 lista.add(cc3);
 lista.add(cc4);

 for (Conta conta : lista) {
         System.out.println(conta + " , " + conta.gettitular().getnome() +   " , " + conta.getSaldo());
 }

 lista.sort(new OrdenarString());
 System.out.println("---------");

 for (Conta conta : lista) {

     System.out.println(conta + " , " + conta.gettitular().getnome() +  " , " + conta.getSaldo());
 }

}

class Ordenar String implements Comparator{

@Override
public int compare(Conta c1, Conta c2) {
    String nomec1 = c1.gettitular().getnome();
    String nomec2 = c2.gettitular().getnome();
    return nomec1.compareTo(nomec2);


}

}


E a saída do meu código é a primeira sem ordenação som com o modo que foi inserido:

conta corrente metodo toString: 24 , Nico , 333.0

conta poupanca metodo toString: 23 , ana , 444.0

conta corrente metodo toString: 21 , Paulo , 111.0

conta poupanca metodo toString: 22 , Ana , 222.0


E na segunda com ordenação :

conta poupanca metodo toString: 22 , Ana , 222.0

conta corrente metodo toString: 24 , Nico , 333.0

conta corrente metodo toString: 21 , Paulo , 111.0

conta poupanca metodo toString: 23 , ana , 444.0


A a duvida é qual critério o método "compareTo()" usou para ordenar as String's?

1 resposta

Bom Dia Anderson,

O método compareTo() das Strings ordena elas pelo valor do caracter que está comparando usando normalmente a tabela ASCII.

Como você pode ver na tabela o valor das letras minúsculas é maior que o das maiúsculas, então na hora de fazer a comparação ele coloca ana por último porque 'a' tem um valor maior que 'P'.

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