当前位置: 首页 > 面试题库 >

Collections.binarySearch(列表列表,K键)的说明。爪哇

潘佐
2023-03-14
问题内容

给定以下声明(取自该
Oracle
Java教程),该声明与Collections类的binarySearch()方法有关:

两种形式的返回值都相同。如果列表包含搜索关键字,则返回其索引。如果不是,则返回值为 (-(插入点)-1)
,其中插入点是将值插入到List中的点,或者第一个元素的索引大于该值或list.size。 (),如果List中的所有元素都小于指定的值。

为什么返回值binarySearch()not只返回负索引而不是负索引减去1?(上述引号的粗体部分)。

简而言之:为什么(-(insertion point) - 1)而且不仅如此(-(insertion point))

提前致谢。


问题答案:

那是因为-(insertion point)模棱两可。您将无法分辨以下几点:

  • 在位置找到的物品0;
  • 找不到项目,插入点是0

使用-(insertion point) - 1,上述两种情况导致不同的返回值(0-1)。



 类似资料:
  • 我正试着把图像与标题并列。 默认情况下执行以下操作: 如果我的宽度允许的话,我会得到图像的列表。我得到了我想要的。是这样的2列图像: 现在,如果我添加下面的图注: 一切看起来都是这样的: 我还在玩列表、层次结构和CSS。 问题是我怎样才能做出以下的东西? 多谢,卡罗利斯

  • 问题内容: 执行“客户列表”时,我得到以下结果,每个标志的含义是什么 从站addr = 100.0.0.0:0000 fd = 5空闲= 3标志= S db = 0 sub = 0 psub = 0 qbuf = 0 obl = 0 oll = 0事件= r cmd = sync 主地址= 100.0.0.0:0000 fd = 6空闲= 0标志= N db = 0子= 0 psub = 0 qb

  • 过去几个月我一直在学习java,刚刚开始进入lambda函数。我最近切换了我的IDE,并注意到在这样的代码上有一个警告说“可以用方法引用替换”。 经过一番挖掘,我意识到 我可以用 这太神奇了。几天前我甚至不知道lambdas,并且正在使用for循环来进行这样的操作。现在我用lambdas替换了我的for循环,更好的是,我可以用方法引用替换我的lambdas。问题是我并不真正了解这一切在内部是如何工

  • 问题内容: 我有一个字符串列表如下 我想明智地将list元素内的每个字符串连接起来,预期输出如下: 的大小可以变化。有没有任何方法可以完成此操作而无需进行for循环。 我尝试使用地图,但无法正常工作。 请帮忙。 问题答案: 这是压缩子列表并使用生成的元组进行映射的一种方法: 如docs所示,此处汇总了来自多个可迭代对象的元素。使用,我们将列表解压缩到单独的可迭代对象中,这意味着该函数将改为接收。

  • These are the default shortcuts for LiteIDE. Note that you can customize these in "View > Options > LiteApp > Keyboard". Standard New Ctrl+N Open Ctrl+O Save Ctrl+S Close Ctrl+W Full Screen Ctrl+Shift

  • 如果我在一个类中有以下语句,其中Synapse是一个抽象类型: 最终是否允许我仍然能够更改列表中Synapse对象的状态,但阻止我向列表中添加新的Synapse对象?如果我错了,请您解释一下final正在做什么,以及我应该在什么时候使用关键字final。