试了楼主的源码,发现确实是这种情况,自己找了半天都没发现原因,特地去查了API文档,终于知道答案:
使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过 sort(List) 方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。
源码修改如下:
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Collections;
- import java.util.List;
- public class Demo2 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
-
- maxShow();//调用方法
-
- }
- public static void maxShow(){
- List<String> al = new ArrayList<String>();
- al.add("java");
- al.add("hello");
- al.add("www");
- //String s = Collections.max(al);
- Collections.sort(al);//进行升序排列
- int i = Collections.binarySearch(al, "java");
- int j = Collections.binarySearch(al, "hello");
- System.out.println(al);//排列后的结果
- System.out.println(i);//打印角标数
- System.out.println(j);//打印角标数
- }
- }
复制代码 |