import java.util.*;public class VLA2 implements Comparator<VLA2> {
int dishSize; public static void main(String[] args) {
VLA2[] va = { new VLA2(40), new VLA2(200), new VLA2(60) }; Arrays.sort(va, va[0]);
int index = Arrays.binarySearch(va, new VLA2(40), va[0]);
System.out.print(index + " ");
index = Arrays.binarySearch(va, new VLA2(80), va[0]);
System.out.print(index);
} public int compare(VLA2 a, VLA2 b) {
return b.dishSize - a.dishSize;
} VLA2(int d) {
dishSize = d;
}
}
int dishSize; public static void main(String[] args) {
VLA2[] va = { new VLA2(40), new VLA2(200), new VLA2(60) }; Arrays.sort(va, va[0]);
int index = Arrays.binarySearch(va, new VLA2(40), va[0]);
System.out.print(index + " ");
index = Arrays.binarySearch(va, new VLA2(80), va[0]);
System.out.print(index);
} public int compare(VLA2 a, VLA2 b) {
return b.dishSize - a.dishSize;
} VLA2(int d) {
dishSize = d;
}
}
是按逆序排列,排序后是:
new VLA2(200), new VLA2(60), new VLA2(40)
Arrays.binarySearch(va, new VLA2(40), va[0]);这里的40的索引就是2.Arrays.binarySearch(va, new VLA2(80), va[0]);没有80,找不到
但由于return b.dishSize - a.dishSize;的写法,造成事实上根据dishSize属性降序排序。排序后顺序为: 200,60,40
所以new VLA2(40)的下标为2new VLA2(80)找不到,对于找不到的元素,Arrays.binarySearch()返回
(-(插入点) - 1)
这里插入点意思是假如把80插入到数组中去,它的下标是多少。
对于原序列,80的插入点是1
所以binarySearch返回-1-1,即-2