Pessoal, tenho uma função de ordenação para ordenar minha tabela de acordo com a coluna clicada, porém a função não ordena perfeitamente, pois falha quando existem valores nulos e a ordenação não é feita da forma correta (colocando por exemplo, o 1000 antes do 2 - por ser alfanumerico a ordenação compara caractere por caractere).
Gostaria de saber se alguém possui algum código de ordenação de alfanuméricos que funcione 100%. Segue abaixo o meu código.
/**
* Ordena o vetor de clientes de acordo com a coluna no parâmetro.
* @author Ulisses Nunes
* @param numColuna - Número da coluna clicada na tabela
*/
public void ordenarTabela(int numColuna)
{
//Ordenando pelo codigo do cliente
if (numColuna == 0)
{
try {
Arrays.sort(vetor,new Comparator()
{
public int compare( Object obj1, Object obj2 )
{
Cliente cliente1 = (Cliente) obj1;
Cliente cliente2 = (Cliente) obj2;
return (cliente1.getCodigo().compareTo(cliente2.getCodigo()));
}
});
} catch (RuntimeException e) {
System.out.println(e.printStackTrace());
}
}
// Ordenando pelo nome do cliente
if (numColuna == 1)
{
try {
Arrays.sort(vetor,new Comparator()
{
public int compare( Object obj1, Object obj2 )
{
Cliente cliente1 = (Cliente) obj1;
Cliente cliente2 = (Cliente) obj2;
return (cliente1.getNome().compareToIgnoreCase(cliente2.getNome()));
}
});
} catch (RuntimeException e) {
System.out.println(e.printStackTrace());
}
}
// Ordenando pela data de nascimento do cliente
else if (numColuna == 2)
{
try {
Arrays.sort(vetor,new Comparator()
{
public int compare( Object obj1, Object obj2 )
{
Cliente cliente1 = (Cliente) obj1;
Cliente cliente2 = (Cliente) obj2;
return (cliente1.getDatnas().compareTo(cliente2.getDatnas()));
}
});
} catch (RuntimeException e) {
System.out.println(e.printStackTrace());
}
}
}