Collections中的常用方法

collections中的常用方法

public class CollectionsTest {

    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(432);
        list.add(23);
        list.add(7);
        list.add(234);
        list.add(65);
        list.add(78);
        list.add(32);
        list.add(54);
        System.out.println("排序:" + sort(list));


        //list2必须大于等于list的size,list的size始终指的是元素的多少和容量无关
        List<Integer> list2 = new ArrayList<Integer>();
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        //true,浅copy
        System.out.println("复制:" + copy(list2, list));



        List<Integer> list3 = new ArrayList<Integer>();
        list3.add(1);
        System.out.println("所有元素都不同吗? " + disjoint(list, list3));

        fill(list2,10);
        System.out.println("全部替换成10:"+list2);

        System.out.println("含有几个10:"+frequency(list2, 10));

        //必须是连续出现,有一个元素不同就是—1 ----lastIndexOfSubList(List<?> source, List<?> target)
        System.out.println("该集合出现的下标:"+indexOfSubList(Arrays.asList(1,2,3,4), Arrays.asList(2,8)));


        //在指定列表的指定位置处交换元素 0 和 2下标 交换
        List<Integer> list1 = Arrays.asList(1, 2, 3);
        Collections.swap(list1, 0, 2);
        System.out.println("1,2,3交换0和2:"+list1);

        //reverse(List<?> list) 反转list ,可指定一个comparator

        //replaceAll(List<T> list, T oldVal, T newVal)使用另一个值替换列表中出现的所有某一指定值。


        //返回由指定对象的 n 个副本组成的不可变列表
        List<Integer> list4 = Collections.nCopies(3, 5);
        System.out.println("三个5:"+list4);

        //也可以指定自定义comparator,还有min()一样的
        System.out.println(list1+"中最大值:"+Collections.max(list1));
    }


    /**
     * 排序
     *
     * @param list
     * @return
     */
    private static List<Integer> sort(List<Integer> list) {
        Collections.sort(list, (a, b) -> b - a);
        return list;
    }

    /**
     * copy将所有元素从一个列表复制到另一个列表。
     *
     * @param dest
     * @param src
     * @return
     */
    private static boolean copy(List<Integer> dest, List<Integer> src) {
        Collections.copy(dest, src);
        System.out.println(dest.get(0));
        System.out.println(dest.get(dest.size() - 1));
        return dest.get(0) == src.get(0);
    }

    /**
     * 如果两个指定 collection 中没有相同的元素,则返回 true。
     *
     * @param list
     * @param src
     * @return
     */
    private static boolean disjoint(List<Integer> list, List<Integer> src) {
        return Collections.disjoint(list, src);
    }

    /**使用指定元素替换指定列表中的所有元素。
     * @param list
     * @param replace
     */
    private static void fill(List<Integer> list, Integer replace) {
        Collections.fill(list, replace);
    }

    /**
     * 返回指定 collection 中等于指定对象的元素数。
     * @param list2
     * @param containNum
     */
    private static int frequency(List<Integer> list2, int containNum) {
       return Collections.frequency(list2, containNum);
    }

    /**
     * 返回指定源列表中第一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。
     * @param source
     * @param target
     * @return
     */
    private static int indexOfSubList(List<?> source, List<?> target)  {
       return Collections.indexOfSubList(source, target);
    }
}

猜你喜欢

转载自www.cnblogs.com/zpyu521/p/11853782.html