Java Vector:如何找出项目的可能索引

Orc*_*rca 2 java eclipse vector

我想在Java中执行以下操作:我有一个元素,我想知道它被插入到其他对象集合中的索引是什么(假设它们已经排序).

所以,如果我有一个这样的int向量:1,3,5,7,9并且我手头有'2',我知道它的'将来'索引是i = 1,值之间1和3.

Pet*_*ego 5

// assumes vector is sorted
// and that vector does not yet contain searchedObject
insertionPoint = -1 * Collections.binarySearch(vector,searchedObject) - 1;
Run Code Online (Sandbox Code Playgroud)

Collections.binarySearch()的定义说明

返回:

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

  • 请注意,如果列表中不存在该对象,binarySearch()将返回"( - (插入点) - 1)".这意味着您必须将1添加到返回值并取消它以查找插入点.http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#binarySearch%28java.util.List,%20T%29 (2认同)
  • 是的它应该按升序排列.如果您有自定义订单,则必须将比较器传递给binarySearch():http://download.oracle.com/javase/1.5.0/docs/api/java/util/Collections.html#binarySearch(java.util .LIST,20T%,%20java.util.Comparator (2认同)