在SparseArray类中判断在稀疏数组中是否存在对应key值时用到了一个二分查找,ContainerHelpers中binarySearch方法如下
class ContainerHelpers {
// This is Arrays.binarySearch(), but doesn't do any argument validation.
static int binarySearch(int[] array, int size, int value) {
int lo = 0;
int hi = size - 1;
while (lo <= hi) {
final int mid = (lo + hi) >>> 1;
final int midVal = array[mid];
if (midVal < value) {
lo = mid + 1;
} else if (midVal > value) {
hi = mid - 1;
} else {
return mid; // value found
}
}
return ~lo; // value not present
}
}
这个类的用法是从SparseArray找到的,用来查找key值,有需要了解的点击https://blog.youkuaiyun.com/inwhites/article/details/88214423
关于binarySearch()方法的用法需要注意几点:
1.数组array在长度为size的序列是有序的,不保证array.le