for(int y = 0; y < lista.size(); y++) {
Conta cc = lista.get(y);
System.out.println(cc.getNome() + " " + cc.getSaldo());
Collections.sort(lista);
System.out.println(cc.getNome() + " " + cc.getSaldo());
}
Quero dar um sort nessa lista para imprimir em ordem alfabetica o nome dos clientes do banco, mas dah um erro no eclipse. Parametrizei a classe para gerar lists para trabalhar com a classe Conta(mãe).
A classe Conta implementa a interface Comparable? Se não implementa, tem que implementar.
public class Conta implements Comparable<Conta> {
//Código da classe
public int compareTo(Conta outraConta) {
return Collator.getInstance().compareTo(getNome(), outraConta.getNome());
}
}
Só sendo um comparable você pode usar o Collections.sort da forma que você fez.
public class ComparadorDeContaPorNome implements Comparator<Conta> {
public int compare(Conta c1, Conta c2) {
return Collator.getInstance().compareTo(c1.getNome(), c2.getNome());
}
}
Daí na hora do sort você faz:
Collections.sort(lista, new ComparadorDeContaPorNome());
Use a interface Comparable quando você quer dizer que sua classe tem uma ordem natural, e portanto, pode ser ordenada seguindo essa ordem. Por exemplo, a classe Integer é um comparable, pois a ordem natural dela é a dos números de maneira crescente.
Use a interface Comparator para definir um comparador externo. Se você quiser ordenar a conta pelo valor, ou um Integer em ordem decrescente, nesse caso, você faz um comparador com a nova ordem.
for(int y = 0; y < lista.size(); y++) {
Conta cc = lista.get(y);
System.out.println(cc.getNome() + " " + cc.getSaldo());
Collections.sort(lista);
System.out.println(cc.getNome() + " " + cc.getSaldo());
}
Quero dar um sort nessa lista para imprimir em ordem alfabetica o nome dos clientes do banco, mas dah um erro no eclipse. Parametrizei a classe para gerar lists para trabalhar com a classe Conta(mãe).[/quote]
Mesmo fazendo o uso correto do Collections esse código tá estranho. Por que você precisa do “sort()” dentro do for? Não seria mais interessante ordenar a lista apenas uma vez?
[quote=s4nchez]
Mesmo fazendo o uso correto do Collections esse código tá estranho. Por que você precisa do “sort()” dentro do for? Não seria mais interessante ordenar a lista apenas uma vez?[/quote]