java 集合框架的工具类Collections

sort(),max(),binarySearch(),fill()

public class CollectionsDemo {
    public static void main(String[] args) {
        replaceAllDemo();
    }

    public static void replaceAllDemo(){
        List<String> list = new ArrayList<String>();
        list.add("abcd");
        list.add("aaaa");
        list.add("z");
        list.add("kkk");
        list.add("qq");
        list.add("qq");
        System.out.println(list);
        Collections.replaceAll(list,"qq","aa");//指定元素替换  list.set()
        System.out.println(list);
        Collections.reverse(list);//反转
        System.out.println(list);
    }
    public static void fillDemo(){
        List<String> list = new ArrayList<String>();
        list.add("abcd");
        list.add("aaaa");
        list.add("z");
        list.add("kkk");
        list.add("qq");
        list.add("qq");
        Collections.fill(list,"pp");  //[pp, pp, pp, pp, pp, pp],元素全部替换
        System.out.println(list);
    }
    //原理
    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;
            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 void binarySearchDemo() {
        List<String> list = new ArrayList<String>();
        list.add("abcd");
        list.add("aaaa");
        list.add("z");
        list.add("kkk");
        list.add("qq");
        list.add("qq");
        Collections.sort(list);
        System.out.println(list);
        //搜索关键字的索引,如果它包含在列表中,则返回搜索键的索引; 否则,返回(-(插入点) - 1) 。 如果列表中的所有元素都小于指定的键,或list.size()。 插入点被定义为将键插入到列表中的点。 请注意,这确保当且仅当找到该键时返回值将为> = 0。
        int index = Collections.binarySearch(list, "aaaaa");
        System.out.println(index);
    }

    public static void maxDemo() {
        List<String> list = new ArrayList<String>();
        list.add("abcd");
        list.add("aaaa");
        list.add("z");
        list.add("kkk");
        list.add("qq");
        list.add("qq");
        Collections.sort(list);
        System.out.println(list);
//        String max = Collections.max(list);  //自然排序最后的元素
        String max = Collections.max(list, new StrLenComparator());  //长度
        System.out.println(max);
    }

    public static void sortDemo() {
        List<String> list = new ArrayList<String>();
        list.add("abcd");
        list.add("aaaa");
        list.add("z");
        list.add("kkk");
        list.add("qq");
        list.add("qq");
        System.out.println(list);
//        Collections.sort(list);  //自然排序
        Collections.sort(list, new StrLenComparator());  //传入比较器
        System.out.println(list);
    }
}

class StrLenComparator implements Comparator<String> {

    @Override
    public int compare(String o1, String o2) {
        if (o1.length() > o2.length())
            return 1;
        if (o1.length() < o2.length())
            return -1;
        return o1.compareTo(o2);
    }
}

 

猜你喜欢

转载自www.cnblogs.com/hongxiao2020/p/12667693.html
今日推荐