Ordenar Matriz

7 respostas
T

Amigos, estou com um pequeno problema, tenho um sistema que le um arquivo Excel com 4 colunas, destino, codigoproduto, quantidade e codigopedido.

Sendo que estes dados podem vir desordenados. Eu carrego estes dados em uma matriz String[][] e depois preciso contar quantos “destino” tem diferentes.

Hoje eu consigo fazer isso com uma marreta horrivel mas que funciona(É tão horrível que hoje fui tentar arrumar o código e nem mexi nesse trecho)

Queria saber então se tem algum jeito de eu ordenar esta matriz pelo campo “destino” que assim ficaria bem mais facil de contar.

Pesquisei no forum mas não achei nada que pudesse ajudar.

Agradeço a ajuda de todos.

7 Respostas

I

Podes colocar um exemplo simples deste teu array bidimencional? T+

J

Mas qual a estrutura desse array?

Veja esse exemplo:

String[][] array = {{"Teste", "abc"}, {"Teste2", "def"}};

Arrays.sort(array, new Comparator<String[]>(){
   public int compare(String[] a1, String[] a2){
      return a1[1].compareTo(a2[1]);
   }
});

Nesse caso, está ordenando baseado no segundo indice do array ("abc", "def", etc).

T

ai vai

tabExcel[j][0] = pi.getContents();
tabExcel[j][1] = seq.getContents();
tabExcel[j][2] = qtd.getContents();
tabExcel[j][3] = soli.getContents();

Essa variável tabExcel é a que vai receber os dadosdo arquivo excel(tabExcel[linhas][4]), onde o tamanho varia mas o numero de colunas é sempre fixo em 4, e preciso ordenar pelo pi(tabExcel[j][0]

Essas variáveis(pi, seq, qtd e soli) são do tipo Cell(Estou usando a api JExcel para ler o xls) e o j vai incrementando até chegar no final do arquivo.

T
"jairelton":
Mas qual a estrutura desse array?

Veja esse exemplo:

String[][] array = {{"Teste", "abc"}, {"Teste2", "def"}};

Arrays.sort(array, new Comparator<String[]>(){
   public int compare(String[] a1, String[] a2){
      return a1[1].compareTo(a2[1]);
   }
});

Nesse caso, está ordenando baseado no segundo indice do array ("abc", "def", etc).

Neste caso eu posso ordenar por qual coluna ele vair ordenar?
A estrutura é como eu mostrei acima.

J

Acho que seria algo desse tipo:

Arrays.sort(tabExcel, new Comparator<String[]>(){ public int compare(String[] a1, String[] a2){ return a1[0].compareTo(a2[0]); } });

T

Valeu Jair

Olhando o teu primeiro exemplo ja tinha chegado a esta conclusão, mas ainda não tive tempo de testar, amanhã quando chegar na empresa eu vejo.

Té amanhã pessoal e muito obrigado pela ajuda!

T

Deu certinho, valeu pessoal!!

Criado 18 de dezembro de 2006
Ultima resposta 19 de dez. de 2006
Respostas 7
Participantes 3