| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2009 13:07:25
|
fabio.nascimento
JavaTeenager
![[Avatar]](/images/avatar/e7728fab6844dee91aa0cc03c0b97bdd.jpg)
Membro desde: 21/08/2006 16:26:00
Mensagens: 159
Localização: São Paulo
Offline
|
Estou com o problema a seguir:
Preciso ordernar uma lista, até aí tudo bem aplico Comparator.
O problema começa quando dentro dessa ordenação eu preciso trocar um determinado atributo
Explicando melhor, digamos que eu tenha uma lista a seguir:
Onde o "C" tem prioridade sobre o "V" e "V" tem prioridade sobre A, dessa forma a lista deveria ficar:
E a cada nova inserção eu devo sempre respeitar a prioridade.
Estou pensando em fazer isso com lista encadeada, mas vejo que talvez eu teria sempre que saber o nó anterior e o posterior, coisa que não é meu caso, pelo fato de que teria que ficar recuperando sempre a posição de cada nó meu.
Jogando tudo isso em um List, ArrayList ou qq estrutura eu teria algo a fazer?
Alguma sugestão ou mesmo um xingamento?
Grato.
Fabio Nascimento
|
"It's easier to invent the future than to predict it." by Alan Kay
Twitter : www.twitter.com/fnascimento |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2009 13:11:26
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se eu tenho 2 coisas com a mesma chave ("C", "V" etc), o ID é diferente, certo? Nesse caso, elas devem ficar ordenadas pelo ID se a chave for igual?
Você pode usar um TreeSet, que é ordenado automaticamente e impede haver 2 registros repetidos. Basta criar um Comparator que ordene primeiro pela chave, e depois pelo ID.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2009 13:17:32
|
fabio.nascimento
JavaTeenager
![[Avatar]](/images/avatar/e7728fab6844dee91aa0cc03c0b97bdd.jpg)
Membro desde: 21/08/2006 16:26:00
Mensagens: 159
Localização: São Paulo
Offline
|
thingol wrote:Se eu tenho 2 coisas com a mesma chave ("C", "V" etc), o ID é diferente, certo? Nesse caso, elas devem ficar ordenadas pelo ID se a chave for igual?
Você pode usar um TreeSet, que é ordenado automaticamente e impede haver 2 registros repetidos. Basta criar um Comparator que ordene primeiro pela chave, e depois pelo ID.
hummm, entendi o que vc falou, mas na verdade esse não é meu problema.
O problema é que todos os C tem que vir primeiro mesmo que estejam sendo inseridos depois do V, por exemplo:
tenho meu array assim:
100 - V - 1
200 - V - 2
Quando eu for inserir o registro de id 300 que é C e o C tem prioridade sobre o V ele deveria ser encaixado antes dos outros empurrando assim os outros para baixo, ficando:
300 - C - 1
100 - V - 2
200 - V - 3
Posso até incluir o C no array e depois ordenar, não teria problema, o problema é que não estou achando uma solução prática e correta para isso.
Valeu.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2009 13:31:04
|
ignacio83
Java Ninja
![[Avatar]](/images/avatar/3d50a489984362c71713b9fd1cf79ef0.jpg)
Membro desde: 16/03/2007 10:46:06
Mensagens: 253
Localização: São Paulo
Offline
|
De uma olhada nestes posts:
http://www.guj.com.br/posts/reply/0/126366.java
http://www.guj.com.br/posts/list/122714.java#663855
http://www.guj.com.br/posts/list/122844.java#664610
|
André de Fontana Ignacio |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2009 13:47:24
|
fabio.nascimento
JavaTeenager
![[Avatar]](/images/avatar/e7728fab6844dee91aa0cc03c0b97bdd.jpg)
Membro desde: 21/08/2006 16:26:00
Mensagens: 159
Localização: São Paulo
Offline
|
Ignacio83, legal entendi.
Mas essa parte de ordenação é super tranquila, como disse, é só meter o comparator.
O problema mesmo é na encadeação da lista, sacou?
Mas valeu cara, se tiver qq dica aí, por favor.
Abraços.
|
"It's easier to invent the future than to predict it." by Alan Kay
Twitter : www.twitter.com/fnascimento |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/05/2009 14:12:22
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
fabio.nascimento wrote:
Ignacio83, legal entendi.
Mas essa parte de ordenação é super tranquila, como disse, é só meter o comparator.
O problema mesmo é na encadeação da lista, sacou?
Mas valeu cara, se tiver qq dica aí, por favor.
Abraços.
se o seu problema é como inserir um valor no meio dos Nodos, esse meu arquivo Node, faz isso
=> http://www.guj.com.br/posts/list/126208.java#682722
nesse link tb tem um exemplo de lista encadeada usando a ordem normal, vc pode adpatar para uma ordem generica vinda de um comparator...
.........
Mas se vc não é obrigaod a fazer com lista encadeada então a melhor solução é usar uma Collection ja pronta e definir o comparator
This message was edited 1 time. Last update was at 12/05/2009 14:15:25
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
|
|