Originariamente inviato da Donovant
L'ordinamento deve essere fatto rispetto al secondo valore di ogni riga quindi ad esempio M[x][1]
Innanzitutto non serve PriorityQueue (nemmeno altre collezioni)! Poi comunque dovresti precisare di che tipo è l'array, int[][]? oppure Integer[][]? O Object[][] (e magari in ogni riga ci sono dati differenti es. Integer e Long)?

Comunque basta solo usare sort() di Arrays specificando un apposito Comparator. Per essere più chiaro, ecco l'esempio supponendo che l'array sia int[][].

codice:
import java.util.*;

public class Prova {
    public static void main(String[] args) {
        int[][] dati = { { 1, 5 }, { 3, 10 }, { 2, 7 }, { 7, 2 } };

        Arrays.sort(dati, new MatrixColumn1Comparator());

        for (int[] d : dati) {
            System.out.println(d[0] + " - " + d[1]);
        }
    }
}


class MatrixColumn1Comparator implements Comparator<int[]> {
    public int compare(int[] a, int[] b) {
        if (a[1] > b[1]) {
            return +1;
        } else if (a[1] < b[1]) {
            return -1;
        } else {
            return 0;
        }
    }
}