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