Ordenar várias colunas

Pessoal, é o seguinte to precisando ordenar uma lista com pelo menos 3 colunas.
Consegui ordernar com duas colunas, mas com três não estou conseguindo.
Alguém poderia me ajudar?

Vlw

PS.: Segue o código da ordenação com duas colunas:

[code]public int compareTo( Object obj ){

	ContaReceberBean contaReceberBean = (ContaReceberBean) obj;
    
int dsCliente = cliente.getDsCliente().compareTo(contaReceberBean.cliente.getDsCliente());
	
    if( contaReceberBean != null ){
    	return ( dsCliente == 0 ?   cliente.getCdCliente().compareTo(contaReceberBean.getCliente().getCdCliente() ) : dsCliente );
    }
    
    return this.compareTo( obj );
} [/code]

Dê uma olhada no método sort da classe java.util.Arrays.

é galera não vai, tentei N situações para tentar ordenar com 3 colunas e não consegui
Será q mais alguém poderia me dar uma luz?

Vlw

Ordenações são teorias um tanto quanto complexa. Se vc não conseguir entender como funciona não vai conseguir fazer. Se vc fez facul deve se lembrar das Ordenações de Algoritimos ou Algoritimos Estruturados.

Explique um pouco melhor q tipo de ordenaçao vc quer…

Giulliano,

Quero ordenar uma lista pelas seguintes colunas: nome, codigo e data respectivamente. Se vc olhar o código acima vai ver que com duas colunas eu consegui ordenar, o problema eh que eu não to conseguindo ordenar com a terceira coluna.

vlw

Então vc recebe uma List, eu suponho, que contem três colunas e elas vem fora de ordem…

Se vc vriar um JavaBean tipo :

public class Cliente{

pribate Integer codigo;
pribate String nome;
pribate String dtNascimento;

//getters and setters
}

E depois vc popular sua List (ou Array não sei qual vc esta usando)com esses javabeans, isso não resolveria seu problema ???

Exemplo do q eu disse:

List<CLiente> lista = new ArrayList<Cliente>();
Cliente cliente = new Cliente();

cliente.setCodigo(1);
cliente.setNome("bla");
cliente.setDtNascimento("05/05/2008");
lista.add(cliente);

cliente = new Cliente();
cliente.setCodigo(2);
cliente.setNome("blu");
cliente.setDtNascimento("05/05/2008");
lista.add(cliente);

//e assim por diante

Deixa eu explicar melhor acho q me expressei mal anteriormente.

Eu uso um HashMap que receber o resultado de uma query, ai eu passo para um ArrayList esse HashMap, no final dou um Collections.sort(lista) e depois no bean eu uso o compareTo para ordenar.

Entendi em partes…se vc recebe uma lista com três campos e ordena essa lista por Código, por exemplo, a sua lista esta ordenada, classificada e indexada pelo código.

Então se vc pega essa mesma lista e ordena pelo NOME…vc acaba de perder a ordenação anterior. A menos q vc precise de um método q fique ordenando a mesma lista várias vezes por colunas diferentes.

você disse que recebe o resultado de uma query.
então retorna o resultado da query ja ordenado…

Pessoal, consegui encontrar uma solução para o meu problema.

Eis o código:

[code] public int compareTo( Object obj ){

	ContaReceberBean contaReceberBean = (ContaReceberBean) obj;
    
	int dsCliente = cliente.getDsCliente().compareTo(contaReceberBean.cliente.getDsCliente());
	
    if( contaReceberBean != null ){

    	return ( dsCliente == 0 ? cliente.getCdCliente().compareTo( 
    				contaReceberBean.getCliente().getCdCliente() ) == 0 ?  dtConhecimento.compareTo(
    						contaReceberBean.getDtConhecimento()) : dsCliente : dsCliente);        
    }
    
    return this.compareTo( obj );
}[/code]

Vlw