У меня есть двумерный массив типа int, и я хочу использовать Arrays.binarySearch (), чтобы найти первый массив с указанным c вторым элементом, независимо от значения первого элемента, но я не могу выяснить правильный синтаксис.
Я думаю, что это должен быть тот же синтаксис, который используется в Arrays.sort () с пользовательским компаратором, но, очевидно, я неверен:)
Вот пример код:
int[][] a = new int[][]{ {1,2}, {2,4}, {3,6}, {9, -1} } ;
//first sort the array
Arrays.sort(a, Comparator.comparingInt((int[] i) -> i[1]));
// after sorting the array is now: {9,-1}, {1,2}, {2,3}, {3,6}
//this won't compile, should return 0 since a[0] is the only element with a second element equal to 2
int index = Arrays.binarySearch(a, 2, Comparator.comparingInt( (int[] i) -> i[1] ));
Я получаю ошибку:
Error:(14, 15) java: no suitable method found for binarySearch(int[][],int,java.util.Comparator<int[]>)
method java.util.Arrays.<T>binarySearch(T[],T,java.util.Comparator<? super T>) is not applicable
(inferred type does not conform to upper bound(s)
inferred: java.io.Serializable
upper bound(s): java.io.Serializable,int[],java.lang.Object)
method java.util.Arrays.<T>binarySearch(T[],int,int,T,java.util.Comparator<? super T>) is not applicable
(cannot infer type-variable(s) T
(actual and formal argument lists differ in length))
Может ли кто-нибудь помочь мне с правильным синтаксисом Arrays.binarySearch ()?
Спасибо!