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()));
}
}