0

Im having a little of a hard time figuring out the specifics of a line of code that sorts a 2d array of integers.

The array that is being sorted is an array that has arrays inside that only have two numbers, I am trying to figure out if (a, b) refers to two separate 2d arrays and if (a[0] , b[0]) refers to the numbers within the 2d arrays?

Arrays.sort(sortedIntervals, (a, b) -> Integer.compare(a[0], b[0]));
0

2 Answers 2

1

You can use key extractor and comparator chaining:

int[][] arr2d = {{1, 3, 6}, {1, 2, 3}, {0, 2, 3}};

// sorting the rows of a 2d array first by
// the first column, then by the second column
Arrays.sort(arr2d, Comparator
        .<int[]>comparingInt(row -> row[0])
        .thenComparingInt(row -> row[1]));

System.out.println(Arrays.deepToString(arr2d));
// [[0, 2, 3], [1, 2, 3], [1, 3, 6]]
Sign up to request clarification or add additional context in comments.

Comments

0

Arrays.sort(sortedIntervals, (a,b) -> Integer.compare(a[0] , b[0]));

As you can see here there is only one method compare: compare(int,int). So a[0] must be a int (or a java.lang.Integer, respecievly).

Since there is only one method accepting a lambda as second parameter it must be this method. And it's javadoc sais a and b are direct elements of the array sortedIntervals and a and b must be an array of ints.

So there is no other option than sortedIntervals is a 2dim array of integers. Since we can access a[0] and b[0] we can expect that all direct elements of sortedIntervals have in their first position can be cast to int.

Also we can predict that

int[][] sortedIntervals ={{},{}}; 
int[][] sortedIntervals ={{6},{}}; 
int[][] sortedIntervals ={{},{6}}; 

will always throw a ArrayIndexOutOfBoundsException inside the lambda because the index 0 does not exists in at least one of the elements.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.