JAVA Collections算法类

 一、  Collections算法类

     它是一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

    格式:Collections.方法名()
    就如数组的操作类Arrays类一样,Collections类是一个操作集合的类,
    注意:只能操作Collection接口下的集合(Map集合不能使用该类)

JAVA Collections算法类_第1张图片

 二、Collection与Collections区别

        1、Collection是集合的顶层接口,本身是一个Interface接口,里面包含了一些集合的基本操作,需要实例化Collection下的list、set、map、vector接口才能调用里面的方法。

        2、Collections是集合框架的工具类,里面包含一些对集合的排序,搜索以及序列化的操作,内部的方法都是静态的,没有构造方法,不能实例化,要调用内部方法直接用类名调用,并且Collections类服务于Collection框架。
 

三、Collections常用的方法

1、addAll方法;可以对所有Collection集合使用
2、sort(),reverse(),replaceAll(),binarySearch(),shuffle(),swap()等方法,只能对List及其子类使用,Set类型不能用

四、使用Collections方法

public class TestCollections {
    public static void main(String[] args) {

        //固定大小集合
        List names = Arrays.asList("peter", "boy", "collection");

        //泛型集合
        List list = new ArrayList<>(names);

        //添加
        get_addAll(list);

        //反转
        get_reverse(list);

        //排序
        get_sort(list);

        //随机排列
        get_shuffle(list);

        //替换数据
        get_replaceAll(list);

        //有序查找
        get_binarySearch(list);

        //交换位置
        get_swap(list);

        //查找最大值
        get_max(list);

        //填充数据
        get_fill(list);

        //拷贝数据
        get_copy(list);

    }

    /**
     * 1.addAll(集合,要添加的元素) 将所有指定元素添加到指定集合中
     *
     * @param list
     */
    private static void get_addAll(List list) {

        Collections.addAll(list, "mike", "zhang", "boy");
        System.out.println("添加数据:" + list);
    }

    /**
     * 2.reverse方法  反转指定列表中的元素,跟sort方法一样,只对List及其子类使用
     *
     * @param list
     */
    private static void get_reverse(List list) {
        Collections.reverse(list);
        System.out.println("倒序数据: " + list);
    }


    /**
     * 3.sort(List 要操作的集合) 根据元素的自然顺序对指定列表按升序进行排序
     *
     * @param list
     */
    private static void get_sort(List list) {
        Collections.sort(list);
        System.out.println("升序排序: " + list);
    }


    /**
     * 4. shuffle()方法,对参数List中的元素进行随机排列 只能对List及其子类使用
     *
     * @param list
     */
    private static void get_shuffle(List list) {
        Collections.shuffle(list);
        System.out.println("随机排序: " + list);
    }

    /**
     * 5.replaceAll(要操作的集合,旧值,新值)方法 将列表中的旧值替换为新值,
     * 只对List及其子类可用
     *
     * @param list
     */
    private static void get_replaceAll(List list) {
        Collections.replaceAll(list, "boy", "BOY");
        System.out.println("替换数据: " + list);
    }

    /**
     * 6.binarySearch()方法,在有序的List中查找指定的元素。注意:有序
     *
     * @param list
     */
    private static void get_binarySearch(List list) {
        Collections.sort(list);
//        如果找不到元素或者元素无序的话,返回负值
//        int index= Collections.binarySearch(list, "mike");
        int index = Collections.binarySearch(list, "mike2");
        System.out.println("有序查找: " + index);
    }


    /**
     * 7.swap(要操作的集合,int i,int j)方法  在List指定的列表中交换i和j两位置处的元素
     *
     * @param list
     */
    private static void get_swap(List list) {
        System.out.println("原列表: " + list);
        Collections.swap(list, 2, 4);
        System.out.println("交换位置: " + list);
    }

    /**
     * 8 max/min(List 要操作的集合) 根据元素的自然顺序对指定列表按升序进行排序
     *
     * @param list
     */
    private static void get_max(List list) {
        Object max = Collections.max(list);
        Object min = Collections.min(list);
        System.out.println("查找最大: " + max);
        System.out.println("查找最小: " + min);
    }

    /**
     * 9 fill(List ,obj) 使用指定的对象填充指定列表的所有元素
     *
     * @param list
     */
    private static void get_fill(List list) {
        Collections.fill(list, "ok");
        System.out.println("填充数据: " + list);
    }

    /**
     * 10 copy(List dest, List src) :是把源列表中的数据覆盖到目标列表
     * 注意:目标列表的长度>=源列表的长度
     *
     * @param list
     */
    private static void get_copy(List list) {
        //目标列表
        List desc = Arrays.asList(new String[list.size()]);
//        System.out.println(desc.size());
        //拷贝数据
        Collections.copy(desc, list);
        System.out.println("拷贝数据: " + desc);
    }


}

JAVA Collections算法类_第2张图片

 

你可能感兴趣的:(JAVA,jvm)