3
respostas

duvida no ao menipular o um metodo

No meu caso eu tenho esse código:

package collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Principal {

    public static void main(String[] args) {
        List<ContaPoupanca> contas = new ArrayList<>();

        ContaPoupanca cp1 = new ContaPoupanca("Edu", 456);
        cp1.deposita(100);

        ContaPoupanca cp2 = new ContaPoupanca("Max", 123);
        cp2.deposita(200);

        ContaPoupanca cp3 = new ContaPoupanca("Alves", 789);
        cp3.deposita(200);

        contas.add(cp1);
        contas.add(cp2);
        contas.add(cp3);




        Collections.sort(contas);

        for (ContaPoupanca conta : contas) {
            System.out.println(conta.getSaldo() +" "+ conta.getNome());
        }
    }
}

que imprime:

322.9 Max 555.9 Edu 988.9 Alves

Veja que somente os numeros estão ordenados mais como eu modifiquei o metodo compareTo() para obter os numeros ordenados agora como eu faria para ter os nomes tambem ordernados?eu teria que usar o HashMap ou teria como eu fazer usando o ArrayList() mesmo?

3 respostas

Oi Guilherme, tudo bem ?

No seu método compareTo você pode fazer a validação através do nome e número, contudo não sei se faz tanto sentido assim, mas de qualquer forma o ArrayList continua te ajudando.

Espero ter ajudado.

Abraços

Oi Guilherme, basta alterar o seu método compareTo. Caso queira Colocar na ordem alfabética dos clientes

Algo parecido com isso:

Collections.sort(contas , new Comparator<ContaPoupanca>() {
        public int compare(ContaPoupanca cp1, ContaPoupanca cp2) {
            return cp1.getNome().compareTo(cp2.getNome());
        }
    });

Mas perceba que se você quiser ordenar por nome e valor ao mesmo tempo vai ser preciso validar primeiro se as contas tem o mesmo valor e, ao invés de retornar 0 caso sejam, retorne o resultado de "compareTo" do nome. Assim você ordenará prioritariamente por valor e depois por nome.