| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 09:39:07
|
lance
JavaBaby
Membro desde: 28/03/2006 21:00:44
Mensagens: 81
Offline
|
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 10:20:30
|
dgouvea
Java Ninja
![[Avatar]](/images/avatar/c8cd4ba23f96cb8b31f3d.jpg)
Membro desde: 08/05/2003 08:32:35
Mensagens: 288
Localização: São Paulo
Offline
|
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.
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Arrays.html
Espero ter ajudado,
abraços
|
David Gouvea
http://davidgouvea.wordpress.com
Definity Toolkit Framework |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 11:04:13
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
Não custa tentar ...
display tab library
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 11:24:12
|
dgouvea
Java Ninja
![[Avatar]](/images/avatar/c8cd4ba23f96cb8b31f3d.jpg)
Membro desde: 08/05/2003 08:32:35
Mensagens: 288
Localização: São Paulo
Offline
|
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.
|
David Gouvea
http://davidgouvea.wordpress.com
Definity Toolkit Framework |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 12:44:42
|
lance
JavaBaby
Membro desde: 28/03/2006 21:00:44
Mensagens: 81
Offline
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 13:17:23
|
dgouvea
Java Ninja
![[Avatar]](/images/avatar/c8cd4ba23f96cb8b31f3d.jpg)
Membro desde: 08/05/2003 08:32:35
Mensagens: 288
Localização: São Paulo
Offline
|
Da uma olhada em um exemplo:
|
David Gouvea
http://davidgouvea.wordpress.com
Definity Toolkit Framework |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 18:46:15
|
marciobarroso
Virtual Machine Man
![[Avatar]](/images/avatar/6828f61cee49c7a4da0f9c1d3e03b857.jpg)
Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 18:57:46
|
lance
JavaBaby
Membro desde: 28/03/2006 21:00:44
Mensagens: 81
Offline
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/05/2007 19:08:07
|
neohacker
Virtual Machine Man
![[Avatar]](/images/avatar/e5a419ed77a4e034849e1e1b68ba015e.jpg)
Membro desde: 30/10/2006 15:23:14
Mensagens: 576
Localização: Santo André
Offline
|
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....
|
http//www.tecnologiaims.blogspot.com
↑ Grab this Headline Animator http://www.imstechnology.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/05/2007 14:38:27
|
lance
JavaBaby
Membro desde: 28/03/2006 21:00:44
Mensagens: 81
Offline
|
neohacker wrote: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....
É por isto que eu estou procurando um outro jeito hehehe
|
|
|
 |
|
|