JavaDoc on
Arrays.binarySearch(...)声明必须已对数组进行排序,因此比较器实际上将数组值与搜索字符串进行比较,并且
不 用于对数组进行再次排序。
这意味着您得到类似
compare(arr[x],"12")和if条件指出两个字符串必须包含逗号,否则它们相等。并且
"12"不包含任何逗号,因此
"12"等于数组中的 每个 元素(总是返回0)。
编辑 :
查看源代码似乎支持我的假设。有这行,例如:
//c is the Comparator //midVal is an element of your array //key is the key parameter you passed to binarySearch(...) c.compare(midVal, key);
返回49999的原因是,第一个
mid值位于index处
mid = (low + high) >> 1,
(0 + 99999) >> 1 ==49999并且由于比较器返回0,因此认为值相等。而繁荣,价值就是“发现”。



