请指教集合中的Collections中的
binarySearch(List<? extends Comparable<? super T>> list, T key)和
binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
这两个方法的用法!最好能给写个例子说明下!还有
reverseOrder() 和reverseOrder(Comparator<T> cmp)的用法!最好能说的详细些!谢谢各位了!

解决方案 »

  1.   

    binarySearch的实现应该是数据结构中所描述的二分查找法。
    所以在使用该方法前应该对使用该方法的集合进行排序。
      

  2.   

    先看看范型 还有 Comparator ,看看等下有没有空跟你讲。
      

  3.   

    没写完,有空再来
    package csdn;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Random;public class CollectionTest {
    /**
     * public static <T> int binarySearch(List<? extends Comparable<? super T>> list,
                                       T key)
         * 上面的参数注意理解? extends Comparable<? super T>表示list里面放的
         * 对象必须是实现了Comparable接口的
     * @param list
     * @param key
     */
    public static void testBinarySearch(List<Person> list,Person key) {
    System.out.println("index:"+Collections.binarySearch(list, key));
    }



    /**public static <T> int binarySearch(List<? extends T> list,
                                       T key,
                                       Comparator<? super T> c)
     * 
     */
    public static void testBinarySearchWithComparator(){

    } public static void main(String args[]) {
    List<Person> perList = new ArrayList<Person>();
    perList.add(new Person("a",20,100));
    perList.add(new Person("b",19,85));
    perList.add(new Person("c",35,120));
    perList.add(new Person("d",10,110));
    perList.add(new Person("e",33,145));
    perList.add(new Person("f",5,132));
    System.out.println(perList);
    testBinarySearch(perList,new Person("a",10,120));//排序前查找,不可预料的结果
    Collections.sort(perList);//排序后
    System.out.println(perList);
    testBinarySearch(perList,new Person("a",10,120));// }
    }/**
     * 人这个对象实现了Comparable,可以被比较,collections.sortList方法会调用里面的
     * compareTo方法
     * @author ydy
     *
     */
    class Person implements Comparable<Person>{
    String name;
    int age;
    int weight;

    public Person(String name,int a,int w){
    this.name=name;
    age=a;
    weight=w;
    } /**
     * 这里以age作为比较,升序排列,你也可以由weight做为比较
     */
    @Override
    public int compareTo(Person o) {
    if(age==o.age)
    return 0;
    if(age<o.age){
    return -1;//return-1的排前面
    }else return 1;

    }
    public String toString(){
    return "name:"+name+" age:"+age+ " weight:"+weight;
    }
    }
      

  4.   

    我已经对集合做了详细的总结,并附带9个例子。请去下载资源
    http://download.csdn.net/source/1323412
      

  5.   

    是泛型的问题,
    二分查找之前必须对原列表进行排序,
    一个是默认的排序方式,
    别一个可以自己实现排序方式,
    如:
    对于一个对象来讲,
    应该是自己实现排序,
    实现Comparable接口,你可以根据对象的id,name等基本的信息重新定义排序规则,进行排序!