使用Java中的自定义比较器在数组中搜索

使用Java中的自定义比较器在数组中搜索,第1张

使用Java中的自定义比较器在数组中搜索

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,因此认为值相等。而繁荣,价值就是“发现”。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5430524.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-11
下一篇2022-12-11

发表评论

登录后才能评论

评论列表(0条)

    保存