• 【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)。

  • 相关阅读:
    thinkpa R61i安装XP SATA的解决方法
    成都港宏4S店买的日产,送的无牌DVD 和可视倒车品牌是路特仕 80007
    设计模式之:解剖观察者模式
    java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)
    lephone 壁纸(裸婚时代 童佳倩姚笛壁纸)
    C# 让程序自动以管理员身份运行
    项目管理的5大过程组、9大知识域、44个管理流程的映射关系
    Spring Security 中如何让用户名不存在的错误显示出来(用户名不存在显示Bad credentials)
    eclipse老是报ThreadPoolExecutor$Worker.run()
    Unison文件夹同步工具
  • 原文地址:https://www.cnblogs.com/yickel/p/14793631.html
Copyright © 2020-2023  润新知