Arrays.sort

Boa tarde,

Gostaria de saber como alinhas um array multidimenssional, exemplo:

String[][] teste = new String[][]{ {"a", "2", "x", "sa"}, {"c", "3", "r", "as"}, {"b", "1", "s", "ss"} };

Ordernar uma dessas colunas, da seguinte forma, caso eu escolher a coluna 1, ele vai deixar assim:
a …
b …
c …

Caso seja na coluna 2:
b 1 …
a 2 …
c 3 …

Só que o array deve ser dessa forma…

É mais uma questão de lógica mesmo, pois acredito que não deva ter algum método para isto. Só sei que o Arrays.sort ordena um array simples.

O que me dizem disto? qual a melhor maneira de fazer?
Não precisam enviar código, enviem a lógica mesmo que já está ótimo :slight_smile:

Arrays.sort só serve para arrays de coisas que sejam ordenáveis. Já um array de arrays não é ordenável.

Neste caso você implementaria o algoritmo quicksort para estes arrays. Ou então use algum objeto que implemente a interface Comparable no lugar de usar arrays.

import java.util.*;

class SortByColumn {

    public static void print (String msg, String[][] tab) {
        System.out.println ("----------" + msg + "----------");
        for (int i = 0; i < tab.length; ++i) {
            for (int j = 0; j < tab[i].length; ++j) {
                System.out.print (tab [i][j] + ", ");
            }
            System.out.println ();
        }
    }
    public static void main(String[] args) {
        String[][] teste = new String[][]{  
            {"a", "2", "x", "sa"},  
            {"c", "3", "r", "as"},  
            {"b", "1", "s", "ss"}  
        }; 
        Arrays.sort (teste, new Comparator<String[]>() {
            public int compare (String[] linha1, String[] linha2) {
                return linha1[0].compareTo (linha2[0]);
            }
        });
        print ("Ordenando pela coluna 0", teste);
        Arrays.sort (teste, new Comparator<String[]>() {
            public int compare (String[] linha1, String[] linha2) {
                return linha1[1].compareTo (linha2[1]);
            }
        });
        print ("Ordenando pela coluna 1", teste);
    }

}

Saída esperada:

----------Ordenando pela coluna 0----------
a, 2, x, sa,
b, 1, s, ss,
c, 3, r, as,
----------Ordenando pela coluna 1----------
b, 1, s, ss,
a, 2, x, sa,
c, 3, r, as,

Uoldiss :slight_smile:
thingol, tu manja muito ein cara!
Obrigado ai por ajudar, vou dar uma olhada nesse tal de Comparator ai, nunca tinha visto.

Valeu ai victorwss