String[] name = new String[5];
name[0] = "11";
name[1] = "22";
name[2] = "33";
name[3] = "44";
//name[4] = "55";
//数组如果是满的二分查找则不会经过数组中的null值,反之则一定会用null值调方法作比较
String search = "55";
if(Arrays.binarySearch(name, search) >= 0) { <——java.lang.NullPointerException
for (int j = Arrays.binarySearch(name, search); j < name.length - 1; j++) {
name[j] = name[j + 1];
}
name[name.length - 1] = null;
}else {
System.out.println("没找到相应元素");
}
private static int binarySearch0(Object[] a, int fromIndex, int toIndex,Object key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
@SuppressWarnings("rawtypes")
Comparable midVal = (Comparable)a[mid];
@SuppressWarnings("unchecked")
int cmp = midVal.compareTo(key); <——有可能会使用数组中arr[4]null值调用方法
if (cmp < 0)
low = mid + 1;
else if (cmp > 0)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
原文:https://www.cnblogs.com/qian202118/p/11188105.html