Ordenando List  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
jaoliveira
Debugger
[Avatar]
Membro desde: 18/09/2003 13:21:28
Mensagens: 72
Localização: Campo Grande/MS
Offline

Galera, seguinte...

Eu tenho uma List de Objetos, e gostaria de saber se existe alguma classe q faz a ordenação desta lista por determinado atributo de cada objeto.

Grato,

Atenciosamente,

José Augusto
[WWW] [MSN]
TedLoprao
Virtual Machine Man
[Avatar]

Membro desde: 09/05/2003 00:32:03
Mensagens: 607
Offline

Utilize Collections.sort(tuaLista, tuaClasseComparator);

Onde o comparator deve implementar a interface java.util.Comparator...
Como usá-la vc pode ver na api, ali explica qual deve ser o retorno do método compare de acordo com o método de comparação q vc irá utilizar...

Fallow

Rodrigo Klein
----------------------------------------------------
Java is the best
jaoliveira
Debugger
[Avatar]
Membro desde: 18/09/2003 13:21:28
Mensagens: 72
Localização: Campo Grande/MS
Offline

TedLoprao wrote:Utilize Collections.sort(tuaLista, tuaClasseComparator);

Onde o comparator deve implementar a interface java.util.Comparator...
Como usá-la vc pode ver na api, ali explica qual deve ser o retorno do método compare de acordo com o método de comparação q vc irá utilizar...

Fallow


E se eu quisesse ordenar por ordem decrescente ?!?!?!?

Valews

Atenciosamente,

José Augusto
[WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

É só inverter o sinal do número retornado pelo método compare, que você deve ter implementado ao criar a classe que implementa Comparator.
Vamos dar um exemplo simples. Rode este programa.

This message was edited 2 times. Last update was at 03/03/2005 13:25:35



[WWW]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

Nao precisa inverter nao. Depois de ordenar:

Collections.reverse(suaLista);

Eh melhor pq vc nao fica replicando comparador

Outra opcao mais pratica e mais complicada: crie um comparador que recebe um comparador no construtor, ele retorna -1 * o que o outro comparador retornaria. Pronto, inverteu.

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Seguindo a sugestão do Guilherme,



[WWW]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

Vamos melhorar mais ainda esse codigo e utilizar o que ja existe pra gente: Java 5 ahead:



Mas tomem cuidado!

1. Implementou o compareTo eh legal implementar o equals!
2. O compareTo so deve retornar 0 quando os dois objetos sao iguais, isto eh... estamos dizendo que dois objetos sao iguais se o INICIO deles foram iguais.... nao era melhor comparar o nome antes de decidir isso?
3. Atalho do metodo compare quando temos numeros INTEIROS, muito mais compacto:

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
trashdollar
Entusiasta Java

Membro desde: 07/04/2007 16:25:41
Mensagens: 24
Offline

Tudo bem galera,

tenho o seguinte problema:
primeiro gerar todos os números entre 1 e 1000 e ordernar em ordem decrescente utilizando ArrayList.
Veja abaixo:

public class Ordernar implements Comparable<Integer>{

public static void main(String[] args) {

List<Integer> lista = new ArrayList<Integer>();
for(int i = 1; i <= 1000; i++)
lista.add(i);
Collections.sort(lista);
for(int i = 0; i < 1000; i++)
System.out.println(lista.get(i));
}

public int compareTo(Integer x) {
return 0;
//como vou fazer a implementação aqui para decrescente
// já que desejo usar Comparable?
}
}
agradeço desde já.

valeu
converge
Thread.start()
[Avatar]

Membro desde: 13/02/2008 18:50:22
Mensagens: 31
Offline

[MSN]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

converge wrote:...

Desculpe te dizer, mas este tópico é de 2005.
E você chegou mais de um ano atrasado para responder o cara aí em cima (que ao invés de criar o próprio tópico foi pegar carona em um tópico que já estava morto a dois anos).

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
converge
Thread.start()
[Avatar]

Membro desde: 13/02/2008 18:50:22
Mensagens: 31
Offline

e o bambu ?

apenas fiz uma contribuição.

[no flames pls!]
[MSN]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

converge wrote:e o bambu ?

Bela resposta!

This message was edited 1 time. Last update was at 09/11/2008 19:03:53


Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
hugov
JavaEvangelist

Membro desde: 30/08/2004 14:14:23
Mensagens: 357
Offline

Dá uma olhada neste post, pois existe um exemplo lá
http://emdia.wordpress.com/2008/11/01/ordenando-uma-lista-de-objeto/

Vitor Hugo
Analista Desenvolvedor Java
WebLog : http://emdia.wordpress.com/
Skype : hugov_br
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team