首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Collections种中的binarySearch()方法,使用出错

2013-09-25 
Collections类中的binarySearch()方法,使用出错!Collections类中的binarySearch()方法即完成内容的检索,检

Collections类中的binarySearch()方法,使用出错!
Collections类中的binarySearch()方法即完成内容的检索,检索之后会返回内容的位置,但是下面的程序却出现了错误,请前辈们指教!


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Demo {
public static void main(String args[]) {
List<String> all = new ArrayList<String>();
Collections.addAll(all, "MLDN", "LXH", "mldnjava");
int point = Collections.binarySearch(all, "MLDN");
System.out.println(point);
}
}

MLDN的位置本来应该是0才对,但是程序的运行结果却是-3!
[解决办法]
引用:
Collections类中的binarySearch()方法即完成内容的检索,检索之后会返回内容的位置,但是下面的程序却出现了错误,请前辈们指教!

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Demo {
public static void main(String args[]) {
List<String> all = new ArrayList<String>();
Collections.addAll(all, "MLDN", "LXH", "mldnjava");
int point = Collections.binarySearch(all, "MLDN");
System.out.println(point);
}
}

MLDN的位置本来应该是0才对,但是程序的运行结果却是-3!


那是因为使用二分查找法的对象必须实现comparable接口,JDK中又该方法的说明,按自然顺序排下序就行了,Collections.addAll(all, "MLDN", "LXH", "mldnjava");
加一句Collections.sort(all);就行了

热点排行