Ajuda com algoritmo  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
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
dgouvea
Java Ninja
[Avatar]

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
[Email] [ICQ]
marciobarroso
Virtual Machine Man
[Avatar]

Membro desde: 13/05/2005 23:17:13
Mensagens: 508
Localização: Barueri / SP / BR
Offline

Não custa tentar ...

display tab library

[]'s
[Email] [WWW] [MSN]
dgouvea
Java Ninja
[Avatar]

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
[Email] [ICQ]
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
dgouvea
Java Ninja
[Avatar]

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
[Email] [ICQ]
marciobarroso
Virtual Machine Man
[Avatar]

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
[Email] [WWW] [MSN]
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
neohacker
Virtual Machine Man
[Avatar]

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
[Email] [WWW]
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
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team