集合之Collections

来源:互联网 发布:android app启动优化 编辑:程序博客网 时间:2024/06/07 20:12

1、sort
根据元素的自然顺序 对指定列表按升序进行排序。

public static void sortDemo()    {        List<String> list = new ArrayList<String>();        list.add("abcd");        list.add("aaa");        list.add("zz");        list.add("kkkkk");        list.add("qq");        list.add("z");        sop(list);        Collections.sort(list);//排序        sop(list);            sop(list);Collections.sort(list,new StrLenComparator());//按指定比较器排序            sop(list);class StrLenComparator implements Comparator<String>{    public int compare(String s1,String s2)    {        if(s1.length()>s2.length())            return 1;        if(s1.length()<s2.length())            return -1;        return s1.compareTo(s2);    }}

max

    public static void maxDemo()    {        List<String> list = new ArrayList<String>();        list.add("abcd");        list.add("aaa");        list.add("zz");        list.add("kkkkk");        list.add("qq");        list.add("z");        Collections.sort(list);        sop(list);        String max = Collections.max(list/*,new StrLenComparator()*/);//结果zz===/*最大长度kkkkk*/        sop("max="+max);    }

二分搜索——必须有序集合
binarySearch

public static void binarySearchDemo()    {        List<String> list = new ArrayList<String>();        list.add("abcd");        list.add("aaa");        list.add("zz");        list.add("kkkkk");        list.add("qq");        list.add("z");        Collections.sort(list,new StrLenComparator());        sop(list);        //int index = Collections.binarySearch(list,"aaaa");        //int index = halfSearch(list,"cc");        int index = halfSearch2(list,"aaaa",new StrLenComparator());        sop("index="+index);    }//折半查找原理public static int halfSearch(List<String> list,String key)    {        int max,min,mid;        max = list.size()-1;        min = 0;        while(min<=max)        {            mid = (max+min)>>1;//  /2;            String str = list.get(mid);            int num = str.compareTo(key);            if(num>0)                max = mid -1;            else if(num<0)                min = mid + 1;            else                return mid;        }        return -min-1;//插入点    }    //不具备比较性    public static int halfSearch2(List<String> list,String key,/*Comparator<String> cmp*/)    {        int max,min,mid;        max = list.size()-1;        min = 0;        while(min<=max)        {            mid = (max+min)>>1;//  /2;            String str = list.get(mid);            int num = cmp.compare(str,key);//没有比较性,所以不能用compareto            if(num>0)                max = mid -1;            else if(num<0)                min = mid + 1;            else                return mid;        }        return -min-1;    }

fill填充

    /*    练习。fill方法可以将list集合中所有元素替换成指定元素。    ,将list集合中部分元素替换成指定元素。    */    public static void fillDemo()    {        List<String> list = new ArrayList<String>();        list.add("abcd");        list.add("aaa");        list.add("zz");        list.add("kkkkk");        sop(list);        Collections.fill(list,"pp");        sop(list);//全部换成pp    }

替换replace 和反转reverse

public static void replaceAllDemo()    {        List<String> list = new ArrayList<String>();        list.add("abcd");        list.add("aaa");        list.add("zz");        list.add("kkkkk");        sop(list);        Collections.replaceAll(list,"aaa","pp");        sop(list);//aaa换成pp        Collections.reverse(list);        sop(list);//逆向    }
0 0
原创粉丝点击