Collections种中的binarySearch()方法,使用出错
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);就行了