Глядя на документы для Arrays.sort(array, comparator)
, можно обнаружить, что входной массив должен иметь класс в качестве типа, поскольку компаратор сравнивает объекты типа T.
public static <T> void sort(T[] a, Comparator<? super T> c)
Таким образом, для сортировки двумерных массивов потребуется больше усилий, чтобы заставить структуру взаимодействовать.
В качестве альтернативы, вы можете использовать потоки, чтобы позволить вам достичь своей цели из-за автобокса, который произойдет по пути. Вот решение, использующее потоки и лямбду, как вы просили:
int[][] contests = { { 1, 7 }, { 2, 5 }, { 3, 2 }, { 4, 3 } };
Arrays
.stream(contests)
.sorted((a1, a2) -> a1[1] - a2[1])
.forEach(a -> System.out.println(Arrays.toString(a)));
Рабочий образец можно найти здесь: https://repl.it/@randycasburn/2D-array-sort