2
respostas

Problema com lista.sort

Quando utilizo o lista.sort, por algum motivo que não consegui identificar, a saída está ficando prejudicada, visto que o console está imprimindo uma linha cheia de "toString":

Conta: Conta: Conta: Conta: Conta: Conta: Conta: Conta: Conta: Conta: Conta: Conta: Nome: Conta Corrente: Agência: 124 - Número: 2201 - 120.0 - Paulo Nome: Conta Poupança: Agência: 124 - Número: 2351 - 250.0 - Daniel Nome: Conta Corrente: Agência: 124 - Número: 2403 - 333.0 - Nico Nome: Conta Poupança: Agência: 124 - Número: 3502 - 444.0 - Guilherme

package br.com.ddBank.teste.util;

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


import br.com.ddBank.modelos.Conta;
import br.com.ddBank.modelos.Cliente;
import br.com.ddBank.modelos.ContaCorrente;
import br.com.ddBank.modelos.ContaPoupanca;

public class TesteOrder {

    public static void main(String[] args) {
        Conta cc1  = new ContaCorrente(124, 2403);
        Cliente clienteCC1 = new Cliente();
        clienteCC1.setNome("Nico");
        cc1.setTitular(clienteCC1);
        cc1.depositar(333.0);

        Conta cc2 = new ContaPoupanca(124, 3502);
        Cliente clienteCC2 = new Cliente();
        clienteCC2.setNome("Guilherme");
        cc2.setTitular(clienteCC2);
        cc2.depositar(444.0);

        Conta cc3 = new ContaCorrente(124, 2201);
        Cliente clienteCC3 = new Cliente();
        clienteCC3.setNome("Paulo");
        cc3.setTitular(clienteCC3);
        cc3.depositar(120.0);

        Conta cc4 = new ContaPoupanca(124, 2351);
        Cliente clienteCC4 = new Cliente();
        clienteCC4.setNome("Daniel");
        cc4.setTitular(clienteCC4);
        cc4.depositar(250.0);

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

        lista.sort( (c1, c2) -> Integer.compare(c1.getNumero(), c2.getNumero()) );


        Comparator<Conta> comp = (Conta c1, Conta c2) -> {
                String nomeC1 = c1.getTitular().getNome();
                String nomeC2 = c2.getTitular().getNome();
                return nomeC1.compareTo(nomeC2);
            };

//        lista.sort(comp);
        lista.forEach( ( conta) -> System.out.println(conta + " - " + conta.getSaldo() + " - "+ conta.getTitular().getNome()));

    }

}
2 respostas

Oie Daniel, tudo bem contigo?

Testei aqui e seu código está funcionando perfeitamente!

Acredito que seja algum problema nas suas classes "Conta" ou "ContaPoupança", se puder enviar seu código dessas classes para eu dar uma olhada, que aí vou conseguir ter uma noção melhor do que pode estar acontecendo.

Fico no aguardo :)

Esse tópico quanto o anterior que você criou são resolvidos da mesma maneira, segue o link para o seu outro tópico onde eu respondi:

Veja se funciona agora!

Se tiver qualquer problema estarei por aqui :)