Ordenação em Java

9 respostas
A

Pessoal,

Tenho uma interface gráfica onde o usuário cadastra alguns nomes. Se o usuário entrar com: ano 1, ano 2, ano 3, ano 4, ano 5, ano 6, ano 7, ano 8, ano 9, ano 10.

Os valores são listados na interface da seguinte forma:
ano 1
ano 10
ano 2
ano 3
ano 4
ano 5
ano 6
ano 7
ano 8
ano 9

Aguem sabe o que posso fazer para colocar o ano 10 após ano 9. Lembrando que o usuário pode entra os nomes em qualquer ordem mas o sistema tem que ordenar. Ainda vale ressaltar que são campos textos.

9 Respostas

louds

compare primeiro pelo tamanho e depois pelo conteúdo

A

É um Collection. O seguinet caso acontece também:

ano 1
ano 10
ano 11
ano 2

Comparar pelo conteudo e pelo tamanho. vou testar mas vários nomes podem ser do mesmo tamanho.

A

É um Collection. O seguinte caso acontece também:

ano 1
ano 10
ano 11
ano 2

Comparar pelo conteudo e pelo tamanho. vou testar mas vários nomes podem ser do mesmo tamanho.

micheljuca

pq vc nao cria seu compareTo e usa Collections.sort(colecao);

Seu comparteTo pegaria a segunda parte (numeros) e compararia como numeros mesmo, usando parseInt.

Pelo menos é a unica solucao que vejo no momento.

A

Já estou implementando um comparator, mas acho que o Collection. sort() só aceita um List como parâmetro.

micheljuca

tu pode usar algo assim?

Collection c = new ArrayList();
Collections.sort((ArrayList) c);
A

Na verdade o processo de ordenação não é tão trivial assim:

Por exemplo posso ter A002B ou A130B e por ai vai.

Vou pesquisar melhor.

_fs

Você pode implementar o comparator que quiser:

Collections.sort( list, new Comparator() {
     public int compare( Object o1, Object o2 ) {
          return 0;
     }
} );
D

Provavelmente um o comparator de strings resolve seu problema em 90% dos casos, e vc ainda pode tratar casos especiais, vide abaixo:

Collections.sort( list, new Comparator() {
      public int compare( Object o1, Object o2 ) {
///   if(condicao de caso especial){
//    ...
//     return
//    }

           return o1.toString().copareTo(o2.toString);
      }
 } );
Criado 10 de maio de 2006
Ultima resposta 10 de mai. de 2006
Respostas 9
Participantes 5