Вот решение с использованием Comparator.class
int[][] array = {{1,2},{2,9}, {2,7},{2,8},{5,6},{5,8},{5,2},{4,1}, {4,4}};
Arrays.sort(array, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if(o1[0] == o2[0]){
return o1[1]-o2[1];
}else {
return o1[0]-o2[0];
}
}
});
System.out.println(Arrays.deepToString(array));
Печатает это: [[1, 2], [2, 7], [2, 8], [2, 9], [4, 1], [4, 4], [5, 2], [5, 6], [5, 8]]