binarySearch
public static <T> int binarySearch(List<? extends Comparable<? super T>> list,T key)
使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过 sort(List) 方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。
此方法对“随机访问”列表运行 log(n) 次(它提供接近固定时间的位置访问)。如果指定列表没有实现 RandomAccess 接口并且是一个大型列表,则此方法将执行基于迭代器的二分搜索,执行 O(n) 次链接遍历和 O(log n) 次元素比较。
上面是api上说的,把你的程序改成整型运行了一下,结果是对的。- package test;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- public class CollectionDemo04 {
- public static void main(String[] args) {
- List<Integer> all = new ArrayList<Integer>();
- Collections.addAll(all, 4, 12, 26, 48);
- int point1 = Collections.binarySearch(all, 12);
- System.out.println("检索结果:" + point1);
- int point2 = Collections.binarySearch(all, 26);
- System.out.println("检索结果:" + point2);
- int point3 = Collections.binarySearch(all, 1);
- System.out.println("检索结果:" + point3);
- int point4 = Collections.binarySearch(all, 4);
- System.out.println("检索结果:" + point4);
- }
- }
复制代码 运行结果:
检索结果:1
检索结果:2
检索结果:-1
检索结果:0
|