【JAVA】【集合6】Java中的Collections工具类

【集合】Collections工具类

一、Collections定义

java.util.Collections 是一个包装类。它包含有各种集合操作的 静态多态方法。此类 不能实例化,就像一 个工具类,服务于Java的Collection框架。

其定义:

public class Collections {
    ....
}

二、Collections常用静态方法

1. emptyList()方法

参考:https://blog.csdn.net/u011595939/article/details/80655788 https://baijiahao.baidu.com/s?id=1633306638148611870&wfr=spider&for=pc

【emptyLsit()方法定义】

{
    public static final List EMPTY_LIST = new EmptyList<>();

    public static final <T> List<T> emptyList() {
        return (List<T>) EMPTY_LIST;
    }
    
    private static class EmptyList<E> {
         ....
    }
}

【作用】:

  • Collections.emptyList()方法实际上就是返回了一个空的List(size为0的List对象),但是这个List和我们平时常用的那个List是不一样的。这个方法返回的List是Collections类的一个静态内部类,它继承AbstractList后并没有实现add()、remove()等方法,因此这个返回值List并不能增加删除元素

  • 既然这个List不能进行增删操作,那么它有何意义呢?

    有时候我们在函数中需要返回一个List,但是这个List是空的。

    • 有人会说,返回null也行啊。如果我们直接返回null的话,调用者还需要进行null的判断。所以一般建议返回一个空的List。
    • 又有人说,我直接返回一个new ArrayList()呗,但是new ArrayList()在初始化时会占用一定的资源。所以还是建议返回一个空的List。
  • 如上可以看到,Collections.EMPTY_LIST返回的是一个空的List。EMPTY_LIST和emptyList()方法啥区别呢? -两者的唯一区别是:Collections. emptyList()支持 泛型 ,所以在需要泛型的时候,可以使用Collections. emptyList()。

2. 类似的还有empty方法

emptySet()/EMPTY_SET、emptyMap()/EMPTY_MAP

3. List对应集合的排序类方法

(1)洗牌方法shuffle:将当前集合内的数据进行随机排序。

public static void shuffle(List<?> list) 

public static void shuffle(List<?> list, Random rnd) 

(2)升序排序Sort

 //类型需是实现(比较器)Comparable接口的类,此方法只使用一种排序方案,这种方案叫作“自然比较”方案。
 public static <T extends Comparable<? super T>> void sort(List<T> list) {
        list.sort(null);
 }
 
 //参数c指定一个排序比较器,使用此比较器进行排序排序顺序。
 public static <T> void sort(List<T> list, Comparator<? super T> c) {
        list.sort(c);
 }
 
 .... 

(3)逆序排序Reverse:对当前集合的元素按照相反的顺序进行排序

public static void reverse(List<?> list) 

4. SingletonList()方法

Collections.singletonList()返回的是不可变的集合,但是这个长度的集合只有1 。

    public static <T> List<T> singletonList(T o) {
        return new SingletonList<>(o);
    }

三、CollectionsUtils定义

在org.apach.commonscollection4包中还提供了CollectionsUtils工具类。如其提供集合是否为空判断:CollectionsUtils.isEmpty(List)、CollectionsUtils.isNotEmpty(List)。

posted @ 2021-05-21 14:26  小拙  阅读(291)  评论(0编辑  收藏  举报