Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida no Ex. 9 da Aula 5 - Collections framework

Boa noite Amigos. É o seguinte. No exercicio pediu para comparar duas Contas Poupanças pelo nome do cliente. Consultando a documentação do java.lang.String, especificamente o método compareTo() eu resolvi fazer da seguinte maneira:

public int compareTo(ContaPoupanca outra) {
        if(this.getNomeDoCliente().charAt(0) < outra.getNomeDoCliente().charAt(0)) return -1;
        if(this.getNomeDoCliente().charAt(0) > outra.getNomeDoCliente().charAt(0)) return 1;
        return 0;
    }

Fiz uns teste ( Criei algumas contas com nomes , fiz ordenação ) e parece que funcionou, mas será ?

2 respostas
solução

Olá Samuel! Veja bem, o que você fez não está errado, no entanto tem várias falhas e também não é uma boa prática. No caso você como forma de comparação apenas a primeira letra de cada nome do cliente, então eu te pergunto: No caso de dois clientes com a mesma letra, como Romário e Rodrigo, como vai ficar a ordenação?

Sem contar que seu código ficou meio extenso, complicado e com uma lógica desnecessária. Veja só, a classe String ela já implementa a interface Comparable então, ao invés de você mesmo criar uma forma de comparar Strings, você simplesmente delega essa atividade pra o método que já existe na classe e que ja foi implementado, fazendo assim:

public int compareTo(ContaPoupanca outra) {
        return this.getNomeDoCliente().compareTo(outra.getNomeDoCliente());
    }

Assim o código fica melhor e você faz bom uso das Bibliotecas do Java. Espero ter ajudado! Bons Estudos!

Obrigado, foi justamente como o instrutor deu a resposta