阅读 897

Collections工具类常见用法:

package com.shengxue.manager.service.test;

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;

/**

  • Collections工具类常用的方法:1、排序 2、查找替换 3、同步控制(不推荐,需要线程安全的集合类型时请考虑使用JUC包下的并发集合) */

public class CollectionsTestDemo {

public static void main(String[] args) {

    ArrayList<Integer> list1 = new ArrayList<>();
    list1.add(-5);
    list1.add(-1);
    list1.add(1);
    list1.add(3);
    list1.add(5);
    list1.add(7);
    list1.add(-5);
    list1.add(9);
    list1.add(1);
    System.out.println("原始数组list1:"+list1);
    //反转reverse
    Collections.reverse(list1);
    System.out.println("反转数组list1:"+list1);

    /**
     * void rotate(List list, int distance)//旋转。
     * 当distance为正数时,将list后distance个元素整体移到前面。
     * 当distance为负数时,将 list的前distance个元素整体移到后面。
     */
    Collections.rotate(list1,2);
    System.out.println("旋转数组list1:"+list1);

    //按自然排序
    Collections.sort(list1);
    System.out.println("自然排序:"+list1);
    //随机排序
    Collections.shuffle(list1);
    System.out.println("随机排序:"+list1);
    //自定义排序
    Collections.sort(list1, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2.compareTo(o1);
        }
    });
    System.out.println("自定义排序:"+list1);

    //交换两个索引位置的元素
    Collections.swap(list1,2,5);
    System.out.println("交换2、5两个索引后:"+list1);


    /**
     * int binarySearch(List list, Object key)//对List进行二分查找,返回索引,注意List必须是有序的,key为要查找的元素
     * int max(Collection coll)//根据元素的自然顺序,返回最大的元素。 类比int min(Collection coll)
     * int max(Collection coll, Comparator c)//根据定制排序,返回最大元素,排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)
     * void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。
     * int frequency(Collection c, Object o)//统计元素出现次数
     * int indexOfSubList(List list, List target)//统计target在list中第一次出现的索引,找不到则返回-1,类比int lastIndexOfSubList(List source, list target).
     * boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替换旧元素
     */
    ArrayList<Integer> list2 = new ArrayList<Integer>();
    list2.add(-1);
    list2.add(1);
    list2.add(3);
    System.out.println("原始数组list2:"+list2);
    Collections.sort(list1);
    int i = Collections.binarySearch(list1, 7);
    System.out.println("二分查找7的索引:"+i);

    Integer max = Collections.max(list1);
    Integer min = Collections.min(list1);
    System.out.println("最大值:"+max+" 最小值:"+min);

    int frequency = Collections.frequency(list1, 5);
    System.out.println("5出现的次数:"+frequency);

    Collections.replaceAll(list2,1,5);
    System.out.println(list2);

    int i1 = Collections.indexOfSubList(list1, list2);
    System.out.println(i1);

    Collections.fill(list2,1);
    System.out.println(list2);


    /**
     * emptyXxx(): 返回一个空的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可以是Map。
     * singletonXxx(): 返回一个只包含指定对象(只有一个或一个元素)的不可变的集合对象,此处的集合可以是:List,Set,Map。
     * unmodifiableXxx(): 返回指定集合对象的不可变视图,此处的集合可以是:List,Set,Map。
     * 上面三类方法的参数是原有的集合对象,返回值是该集合的”只读“版本。
     */

}
复制代码

}

文章分类
阅读
文章标签