Não é necessário criar métodos de ordenação, caso você utilize arrays primitivos, pode utilizar a classe java.util.Arrays, ou em caso de coleções java.util.Collections, essas classes permitem a ordenação de arrays e de coleções de diversas formas. utilizando o método ‘sort’, você pode passar um Comparator como parâmetro, você pode fazer um comparator para cada atributo de ordenação.
Se for possivel utilizar um DisplayTag em seu projeto pode ter certeza que ele vai facilitar muito a sua vida. Pelo menos metade da sua implementação vai embora.
Vc pode criar uma query dinâmica que receba o número da coluna que vc quer ordenar e fazer a ordenação no banco …
e então, a cada coluna vc manda o seu número para a query … com certeza vai funcionar …
[]'s
neohacker
Bem eu nunca usaria algo desse tipo, dai o usuário ia ficar brincando de ordenar e fico toda hora buscando no banco, imagine isso numa tabela de sei lá 1milhão de registros, capaz de derrubar o banco auhauhau…
L
lance
Olá,
Estou com problemas para achar uma solução para o meu problema. Talvez al´guém que já tenha mais experiência possa me ajudar. Estou desenvolvendo uma aplicação web que já existe há alguns anos e agora preciso ordenar arrays.
O que acontece é que eu tenho uma tabela e preciso ordenar pelas colunas. Ok, até aí um quicksort resolve.
Acontece que eu quero fazer um método único para que eu possa ordenar vários tipos de tabela: produtos, fornecedores, etc. Estas classes não herdam de nenhuma classe em comum, exceto object e alterá-las poderia causar um impacto bem grande.
Eu quero que quando o usuário clique em “código”, a tabela seja ordenada por código, quando clicar em “nome”, seja ordenada por nome, etc. Em cada tabela as colunas tem nomes diferentes.
Existe algum meio de que centralizadamente eu ordene todas as tabelas?
Obrigado,
Oscar
L
lance
Olá,
Obrigado pelas respostas.
Eu precisava de uma ordenação bem eficiente, pois preciso ordenar muitos registros. Então preferi implementar um quicksort a usar o sort.
Sobre a display tag, ela é o motivo de eu estar fazendo este trabalho. Meus colegas de projeto me disseram que estavam utilizando ela, porém esta só ordenava a primeira página da tabela (temos tabelas paginadas). E então era para eu ver se conseguia fazer um método de ordenação que fosse eficiente o suficiente para ordenar todos os registros e que o fizesse com todos os registros da tabela de uma vez.
Ainad estou implementando mas acho que vou conseguir: fiz um quicksort onde o desenvolvedor vai me passar a lista, o nome da classe dos objetos que estão na lista (no meu caso os objetos de uma lista são da mesma classe) e o método para recuperar o valor da coluna a ser ordenada. Com isto eu uso reflection para pegar o método e utilizo o quicksort. Tratando tudo como strings.
Por enquanto não achei nenhum problema, é um pouco trabalhoso, mas está funcionando por agora.
Uma dúvida com os sort’s, que me surgiu agora:
No comparator eu defino qual valor dos objetos será comparado, certo? (Por exemplo: para a classe Pessoa, se será o nome, idade, etc).Aí apenas preciso dar o Array.sort()?
Obrigado,
Oscar
L
lance
dgouvea:
Foi mais ou menos isto que eu acabei fazendo, um pouco mais complicado. Na proxima vez eu uso esta sua idéia que é bem mais cimples que a minha hehe.
Marcio:
Sim, mas para isto, cada vez que o usuário clicasse na ordenação eu teria que buscar os registros do banco de novo. Deste jeito isto não é necessário.
Oscar
L
lance
É por isto que eu estou procurando um outro jeito hehehe