日期:2014-05-20  浏览次数:20642 次

为什么答案是: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的,出现这种情况