标题: 关于Collections工具类的binarySearch方法如何使用 [打印本页] 作者: 圣光忏悔 时间: 2015-3-30 17:40 标题: 关于Collections工具类的binarySearch方法如何使用 当查找的是元素的时候直接传递已排序的List集合和要查找的对象即可返回索引,但是要查找的是对象的时候就不明白了
binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
使用二分搜索法搜索指定列表,以获得指定对象。
要传递三个参数,前两个不变,第三次需要传递一个排序方法,但是不管我排序方法怎么写,查找的返回值都是1
在对象Student里面实现了comparator借口没用.在储存完毕之后用集合方法排序也没用.
想传递参数的时候不传递第三个参数,排序方法的时候应该就能出正确的结果了,但是如果查找的是对象一样出错
The method binarySearch(List<? extends Comparable<? super T>>, T) in the type Collections is not applicable for the arguments (ArrayList<Student>, Student)
以下是代码
public class ArrayListDemo2 {
public static void main(String[] args) {
// 创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
// 创建学生对象
Student s1 = new Student("武松", 30);
Student s2 = new Student("鲁智深", 40);
Student s3 = new Student("林冲", 36);
Student s4 = new Student("杨志", 38);
// 添加元素
array.add(s1);
array.add(s2);
array.add(s3);
array.add(s4);
// 将集合排序
Collections.sort(array, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
int sum = o2.getAge() - o1.getAge();
int sum2 = sum == 0 ? o2.getName().compareTo(o2.getName()) : 0;