Garmaine Staff asked 2 years ago

I was using Arrays.sort() function to sort 2d array (int[][] array). Since I want to sort it base on the first element. For example, {{2,3},{1,4}} base on 1st element the array will be {{1,4},{2,3}}. So I override the compare function.

Arrays.sort(arr, new Comparator<int[]>() {

    public int compare(int[] o1, int[] o2){
        if(o1[0] < o2[0]){
            return -1;
        } else if (o1[0] > o2[0]) {
            return 1;
        } else {
            return 0;


I know this sort work. But I don't understand how this compare work. I was thinking the

new Comparator<int[]>  

should be

new Comparator<int[][]>

since this is 2d array. and inside of compare function should be compare

o1[0][0]  and  o2[0][0]

Can anyone help me understand it?

Also this is using Arrays.sort, can I use Collections.sort? what is different between it?