public class StudentList {
List<Student> sl=new ArrayList();
。。
public void queryInfo(Student s){
     Collections.sort(sl);//先排序
     Collections.binarySearch(sl, s.s_Name);
    }
}
二分法有错  说参数有错  那个sl不对   但不知道为什么  怎么改

解决方案 »

  1.   

    Collections.binarySearch(list) 这种参数 里的list里放的元素类要实现Comparable,也就是要有比较依据
    Collections.binarySearch(list, key, comp) 这种list 没有限制 key 是要比较的,comp 是一个比较器 对于要比较的类的比较依据定义总的来说 就是你传入的这个类 没有比较依据 程不知道该怎么比
      

  2.   

    我实现了这个接口的   但是在那个compareto 函数里面,要不要把Student类里所有的成员变量都比较过来?我现在就比较了name,排序排不起来  
      

  3.   

    第一个,要保证你的Student的定义class Student implements  Comparable<Student>{
    }
    而且要实现以下方法
    public int compareTo(Student obj) {}查找时,第个参数应该为Student 的实例。
    Collections.binarySearch(sl, s.s_Name);下面是我的一个例子,类似class Student implements  Comparable<Student>{
    public Student(int id){
    this.id = id;
    }
    public int id;

    public int compareTo(Student obj) {
    return this.id - obj.id;
    }
    }public class T1{
    public static void main(String args[]) {
    List<Student> list = new ArrayList<Student>(); //加入数据
    list.add(new Student(12));
    list.add(new Student(13));
    list.add(new Student(21));
    list.add(new Student(3)); //排序前输出
    for(Student stu : list){
    System.out.print(stu.id);
    System.out.print(",");
    }
    System.out.println();

    Collections.sort(list);
    for(Student stu : list){
    System.out.print(stu.id);
    System.out.print(",");
    }
    System.out.println();

    int r = Collections.binarySearch(list, new Student(13));
    System.out.println(r); }