为什么,如果搜索的插入点位于元素2,返回的实际插入点将为-3?

时间:2013-04-22 03:55:08

标签: java

我不理解Collection中的这一点 “不成功的搜索返回一个表示插入点的int索引。 插入点是元素集合/数组中的位置 将插入以保持集合/数组正确排序。因为正回报值和0表示成功搜索,binarySearch() 方法使用负数来表示插入点。由于 0是有效的 为了成功搜索,第一个可用的插入点是-1。因此, 实际插入点表示为( - (插入点)-1)。对于 例如,如果搜索的插入点位于元素2,则实际插入 返回的点数为-3。

1 个答案:

答案 0 :(得分:0)

api使用范围[0,intinity)来表示FOUND结果 - 所以返回0表示它实际上找到了你在索引0中寻找的内容(集合/数组的第一个索引)。

这意味着可用于返回NOT_FOUND结果的范围为负 - (-inf,-1)

那么在这种约束条件下,你如何沟通结果“找不到请求的元素,但是应该在索引0处插入”?

你不能返回-0,因为它与+0相同并且表示FOUND结果。所以你给负数加一个偏移量。这种方式“应该在索引0”变为-1,“应该在索引1”变为-2等。