* Collections演示。

     * 1,用于操作集合的工具类。

     * 2,提供了很多的静态方法。

     *

     * 比如对list集合排序,二分查找,位置置换。

     * 对排序的元素进行顺序的逆转。reverseOrder

     * 还可以获取集合的最大值和最小值。

     * 最牛叉的是将非同步的集合转成同步的集合 synchronizedXXX

package cn.itcast.p4.collections;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
 
import cn.itcast.p2.comparator.ComparatorByLength;
 
    public class CollectionsDemo {
    public static void main(String[] args) {
        sortDemo();
    }
    
    
    //1,演示Collections中的排序,元素重复的集合排序,是针对List的方法。
    public static void sortDemo(){
        List<String> list = new ArrayList<String>();
        list.add("abc");
        list.add("aaaaaaa");
        list.add("hahah");
        list.add("cba");
        System.out.println(list);//List集合本身有序,不是有排序
        //排序方法。
        //Collections.sort(list);//按字典顺序排序
         
        //Collections.sort(list,new comparatorByLength());//比较器排序,按字符串长度排序
         
        //Collections.sort(list,Collections.reverseOrder());//按字典的排序逆转
         
        //Collections.sort(list,Collections.reverseOrder(new ComparatorByLength()));//将已有的比较器的排序逆转
         
        //String max = Collections.max(list);//获取自然排序下的排在最后的值
         
        //String max = Collections.max(list,new ComparatorByLength());//获取比较器下排在最后的值
         
        String max = myMax(list);//自定义按字典顺序获取最大值,
         
        //String max = myMax(list,new ComparatorByLength());//按比较器的顺序取得的最大值
         
        System.out.println("max="+max);
        System.out.println(list);
    }
  
  
    //模拟一个max方法。获取集合中的最大值。
    public static <T extends Object & Comparable<? super T>> T myMax(Collection<? extends T> coll){
        Iterator<? extends T> it = coll.iterator();
        //定义一个记录较大值的变量。
        T max = it.next();
        while(it.hasNext()){
            T temp = it.next();
            if(temp.compareTo(max)>0){
                max  = temp;
            }
        }
        return max;
    }
     
     
     
    public static String myMax(Collection<String> coll, Comparator<String> comp){
    Iterator<String> it = coll.iterator();
        //定义一个记录较大值的变量。
        String max = it.next();
        while(it.hasNext()){
            String temp = it.next();
            if(comp.compare(temp, max)>0){
                max  = temp;
            }
        }
        return max;
    }
     
}