Problemas com ordenação (Comparator ou Lista encadeada ?)  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
fabio.nascimento
JavaTeenager
[Avatar]

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
[Email] [MSN]
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.
[WWW]
fabio.nascimento
JavaTeenager
[Avatar]

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.
[Email] [MSN]
ignacio83
Java Ninja
[Avatar]

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
[MSN]
fabio.nascimento
JavaTeenager
[Avatar]

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
[Email] [MSN]
Lavieri
GUJ Master
[Avatar]

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