Java.util.Collections 类

java.util.Collections.binarySearch() 方法用于使用二进制文件在指定列表中搜索指定对象搜索算法。在进行此调用之前,必须根据其元素的自然顺序(如通过 sort(List) 方法)将列表按升序排序。如果未排序,则结果不确定。如果列表包含多个等于指定对象的元素,则无法保证会找到哪一个。

语法

public static <T> int  binarySearch(List<? extends Comparable<? super T>> list, 
                                    T key)

这里,T是列表中元素的类型。

参数

list 指定要搜索的列表。
type 指定要搜索的键。

返回值

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

Exception

抛出 ClassCastException,如果列表包含不可相互比较的元素(例如字符串和整数),或者搜索键与列表的元素不可相互比较。

示例:

在示例中下面,java.util.Collections.binarySearch() 方法用于在给定列表中搜索给定元素。

import java.util.*;

public class MyClass {
  public static void main(String[] args) {
    //创建List对象
    List<Integer> MyList = new ArrayList<Integer>();

    //填充列表
    MyList.add(10);
    MyList.add(20);
    MyList.add(30);
    MyList.add(40);
    MyList.add(50);

    //30 出现在索引 = 2 处
    System.out.println(Collections.binarySearch(MyList, 30));

    //35 不在列表中。插入点
    //35 将是 3。因此,返回 (-3-1) = -4
    System.out.println(Collections.binarySearch(MyList, 35));  
  }
}

上述的输出代码为:

2
-4