为什么答案是:the result is undefined,我觉得答案应该是1:
import java.util.*;
class kl{
public static void main(String arg[]){
List list=new ArrayList();
list.clear();
list.add( "b ");
list.add( "a ");
list.add( "c ");
System.out.println(Collections.binarySearch(list, "a "));
}
}
------解决方案--------------------我的就是1,不知道你是怎么运行的
------解决方案--------------------运行结果就是1
------解决方案--------------------java 交流群:36468871 高手请进!
------解决方案--------------------1
第一次就找到了
------解决方案--------------------在进行此调用之前,必须根据列表元素的自然顺序 对列表进行升序排序(通过上面的 sort(List) 方法)。如果没有对列表进行排序,则结果是不明确的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。
------解决方案--------------------我运行的结果也是1啊!
楼主再运行一次试试
------解决方案--------------------binarySearch
一看就是二分查找法:
二分查找法的必要条件就是“顺序排列”。
大家得到的结果不一样,可能和jdk的版本有关。
------解决方案--------------------二分查找基于排序的
排序的顺序可能不同
------解决方案--------------------F:\javaclass\csdn> javac kl.java
注意:kl.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
我的是最新版jdk1.6的,出现这种情况