Ordenação de uma lista Helpppppp

5 respostas
N

Pessoal, tenho a seguinte lista …

| ID | DSC | Parent

| 1 | Principal 1 | null
| 2 | Menu 1 | 1
| 3 | Submenu 1 | 2
| 4 | Submenu 2 | 2
| 6 | Peincipal 2 | null
| 7 | Menu 2 | 1
| 8 | Submenu 1 | 5
[color=blue]| 9 | Submenu 3 | 2 [/color]

Como posso ordenala para que o meu resultado seja:

| 1 | Principal 1 | null
| 2 | Menu 1 | 1
| 3 | Submenu 1 | 2
| 4 | Submenu 2 | 2
[color=red]| 9 | Submenu 3 | 2 [/color]
| 6 | Peincipal 2 | null
| 7 | Menu 2 | 1
| 8 | Submenu 1 | 5

Obrigado!

sei que tenho que fazer algo recursivo mais nao sei como …
alguem pode me ajudar ?

5 Respostas

renamed

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html#sort(java.util.List,%20java.util.Comparator)

N

Eu ja olhei a documentaáo mais to empacado.

Olha como ta ficando:

private void sortPlanActionElementsRecur(int uid, List<SupportValeurFixe> list, List<SupportValeurFixe> sorted)
	{
		Iterator<SupportValeurFixe> iter = list.iterator();
		SupportValeurFixe elem;
		SupportValeurFixe nextelem = null;
		SupportValeurFixe pastelem = null;
		
		
		while(iter.hasNext())
		{
			elem = iter.next();
			
			if (elem.getIdParent() == 0){				
				sorted.add(elem);				

				while (iter.hasNext()){							
					if (nextelem.getIdParent() == elem.getId() )							
						sorted.add(elem);
					}				
				}
			}	
	}

Assim não ta funcionando.

Não sei qual logica usar para que ele busque o primeiro elemento.
depois o primeiro do segundo elemento
depois o terceito e assim por diante …

renamed
nspy:
Eu ja olhei a documentaáo mais to empacado. Olha como ta ficando:
private void sortPlanActionElementsRecur(int uid, List<SupportValeurFixe> list, List<SupportValeurFixe> sorted)
	{
		Iterator<SupportValeurFixe> iter = list.iterator();
		SupportValeurFixe elem;
		SupportValeurFixe nextelem = null;
		SupportValeurFixe pastelem = null;
		
		
		while(iter.hasNext())
		{
			elem = iter.next();
			
			if (elem.getIdParent() == 0){				
				sorted.add(elem);				

				while (iter.hasNext()){							
					if (nextelem.getIdParent() == elem.getId() )							
						sorted.add(elem);
					}				
				}
			}	
	}

Cara, duas perguntas?

1) o que você tentou fazer acima foi um método de ordenação?
2) você precisa fazer esse método na mão em vez de usar o que o java já disponibiliza?

N

Sim, tenho que fazer na mão pois tenho que fazer uma ordenação recursiva …

tenho uma lista -
tenho que pegar o primeiro elemento desta lista (o pai) e procurar o primeiro filho … depois os netos etc …

entende …

renamed

Pai? Filho? Neto?

Você tem uma lista ou uma árvore de elementos?

Criado 29 de outubro de 2009
Ultima resposta 29 de out. de 2009
Respostas 5
Participantes 2