首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当元素不存在并且不是-insertion_point时,为什么Collections.binarySearch返回-(insertion_point - 1)?

当元素不存在并且不是-insertion_point时,为什么Collections.binarySearch返回-(insertion_point - 1)?
EN

Stack Overflow用户
提问于 2013-09-14 02:23:08
回答 2查看 2.2K关注 0票数 4

我一直在使用binarySearch方法,并想知道为什么当元素不存在且不是-insertion_point时,Collections.binarySearch会返回-(insertion_point - 1)?我理解为什么它是负的,但是为什么是-1?

EN

回答 2

Stack Overflow用户

发布于 2013-09-14 02:24:49

因为你不能有负0。

考虑一下如果没有-1的情况。如果在索引0处找到一个元素,它将返回0。如果没有找到一个元素,但是它的插入点是0,那么它也会返回0。你如何区分这两种情况?添加了-1之后,它们现在分别返回0-1,让您可以区分它们。

它是-(insertion point) - 1,它与你的问题略有不同。

票数 21
EN

Stack Overflow用户

发布于 2013-09-14 02:26:44

The documentation说:

返回

如果搜索关键字包含在列表中,则为该关键字的索引;否则为(-(insertion point) - 1)。插入点被定义为将键插入列表的点:第一个元素的索引大于键,如果列表中的所有元素都小于指定的键,则为list.size()。请注意,这保证了当且仅当找到该键时,返回值才为>= 0。

重要的是最后一句话:

请注意,当且仅当找到密钥时,这将保证返回值为>= 0。

If effect,您将从binarySearch返回两个值,这两个值以一种聪明的方式组合在一起。您可以获得有关该项是否存在(通过结果的符号)以及它所属的位置(结果的大小)的信息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18792808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档