Ordenação em Java

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.

compare primeiro pelo tamanho e depois pelo conteúdo

É 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.

É 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.

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.

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

tu pode usar algo assim?

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

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.

Você pode implementar o comparator que quiser:

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

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);
      }
 } );