类 ListUtils


  • public class ListUtils
    extends java.lang.Object
    List工具类
    从以下版本开始:
    2017年10月27日
    作者:
    孙金川
    • 构造器概要

      构造器 
      构造器 说明
      ListUtils()  
    • 方法概要

      所有方法 静态方法 具体方法 
      修饰符和类型 方法 说明
      static java.util.List<com.alibaba.fastjson.JSONObject> distinct​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String distinctKey)
      List - JSONObject value去重
      static <T> java.util.List<T> distinct​(java.util.List<T> list)
      HashSet去重
      static java.util.List<com.alibaba.fastjson.JSONObject> distinctCount​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String distinctKey, SortEnum sortEnum)
      List-JSONObject集合去重统计与排序
      static java.util.List<com.alibaba.fastjson.JSONObject> distinctCountSortSelectKeep​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String distinctKey, SortEnum sortEnum, java.lang.String keepKey, MaxOrMinEnum maxOrMinEnum)
      List-JSONObject集合——去重、统计、排序与元素选择性保留
      static java.util.List<java.util.List<com.alibaba.fastjson.JSONObject>> grouping​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String key)
      数据分组
      static boolean isEmpty​(java.util.List<?> list)
      List数组是否为空
      static boolean isNotEmpty​(java.util.List<?> list)
      List数组是否不为空
      static java.util.List<java.lang.String> keepSameValue​(java.util.List<java.lang.String> list, java.util.List<java.lang.String> list2)
      保留相同值
      static com.alibaba.fastjson.JSONArray merge​(com.alibaba.fastjson.JSONArray array, com.alibaba.fastjson.JSONObject json, java.lang.String key)
      将JSON集合,合并到数组的JSON集合
      static void merge​(java.util.List<com.alibaba.fastjson.JSONObject> list1, java.util.List<com.alibaba.fastjson.JSONObject> list2, java.lang.String key1, java.lang.String key2)
      List合并
      static <T> java.util.List<T> reverse​(java.util.List<T> list, java.lang.Class<T> clazz)
      反转集合
      static java.util.List<com.alibaba.fastjson.JSONObject> sort​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String sortKey, SortEnum sortEnum)
      List-JSONObject集合排序
      static <T> java.util.List<T> sortT​(java.util.List<T> list, java.lang.String sortField, SortEnum sortEnum)
      List-T集合排序
      static java.util.List<com.alibaba.fastjson.JSONObject> toJsonList​(com.alibaba.fastjson.JSONArray jsonArray)
      JSONArray 转 List - JSONObject
      static java.util.List<com.alibaba.fastjson.JSONObject> toJsonList​(java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> list)
      List - Map 转 List - JSONObject
      static <T> java.util.List<com.alibaba.fastjson.JSONObject> toJsonListT​(java.util.List<T> list)
      List - Class 转 List - JSONObject
      static com.alibaba.fastjson.JSONObject[] toJsons​(com.alibaba.fastjson.JSONArray jsonArray)
      JSONArray 转 JSONObject[]
      static com.alibaba.fastjson.JSONObject[] toJsons​(java.lang.String jsonString)
      String 转 JSONObject[]
      static com.alibaba.fastjson.JSONObject[] toJsons​(java.lang.String text, java.lang.String regex, java.lang.String key)
      String 转 JSONObject[] 示例:
      static com.alibaba.fastjson.JSONObject[] toJsons​(java.util.List<com.alibaba.fastjson.JSONObject> list)
      List-JSONObject 转 JSONObject[]
      static <T> com.alibaba.fastjson.JSONObject[] toJsonsT​(java.util.List<T> list)
      List - Class 转 JSONObject[]
      static <T> com.alibaba.fastjson.JSONObject[] toJsonsTAndRemoveEmpty​(java.util.List<T> list)
      List - Class 转 JSONObject[] 并移除空对象
      static <T> java.util.List<T> toList​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.Class<T> clazz)
      List-JSONObject 转 List-Class
      static java.util.List<java.lang.String> toList​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String keepKey)
      List-JSONObject 转 List-String
      static <T> java.util.List<T> toList​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String keepKey, java.lang.Class<T> clazz)
      List-JSONObject 转 List-Class
      static <T> java.util.ArrayList<T> toList​(T[] array)
      数组转List
      static java.util.List<java.lang.String> toListAndDistinct​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String keepKey)
      List - JSONObject 转 List - String 并去除重复元素
      static <T> java.util.List<T> toListAndDistinct​(java.util.List<com.alibaba.fastjson.JSONObject> list, java.lang.String keepKey, java.lang.Class<T> clazz)
      List-JSONObject 转 List-Class 并去除重复元素
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • ListUtils

        public ListUtils()
    • 方法详细资料

      • isEmpty

        public static boolean isEmpty​(java.util.List<?> list)
        List数组是否为空
        参数:
        list - list
        返回:
        是否为空
      • isNotEmpty

        public static boolean isNotEmpty​(java.util.List<?> list)
        List数组是否不为空
        参数:
        list - list
        返回:
        是否不为空
      • grouping

        public static java.util.List<java.util.List<com.alibaba.fastjson.JSONObject>> grouping​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                                                               java.lang.String key)
        数据分组

        将拥有相同的 key 值的JSON数据归为一组

        参数:
        list - 要处理的集合
        key - 分组依据
        返回:
        分组后的list
      • keepSameValue

        public static java.util.List<java.lang.String> keepSameValue​(java.util.List<java.lang.String> list,
                                                                     java.util.List<java.lang.String> list2)
        保留相同值
        参数:
        list - 循环第一层
        list2 - 循环第二层
        返回:
        处理后的list
      • merge

        public static com.alibaba.fastjson.JSONArray merge​(com.alibaba.fastjson.JSONArray array,
                                                           com.alibaba.fastjson.JSONObject json,
                                                           java.lang.String key)
        将JSON集合,合并到数组的JSON集合

        以条件key获得JSONObject数组中每个对象的value作为JSON对象的key,然后进行合并。
        JSON对象key获得的值,应该是一个JSONObject对象

        示例:
                JSONArray array = [
                        {
                                "id": 1,
                                "name": "name"
                        }
                ]
                JSONObject json = {
                        1: {
                                "sex": "男",
                                "age": 18
                        }
                }
         
                String key = "id";
                        
                JSONArray mergeResult = merge(array, json, key);
                System.out.println(mergeResult);
         
        结果: [{"id": 1, "name": "name", "sex": "男", "age": 18}]
        参数:
        array - JSONObject数组
        json - JSON对象
        key - 条件
        返回:
        合并后的JSONArray
      • merge

        public static void merge​(java.util.List<com.alibaba.fastjson.JSONObject> list1,
                                 java.util.List<com.alibaba.fastjson.JSONObject> list2,
                                 java.lang.String key1,
                                 java.lang.String key2)
        List合并

        list2 合并到 list1 里面

        参数:
        list1 - 需要合并的列表
        list2 - 被合并的列表
        key1 - list1中JSON所使用的key
        key2 - list2中JSON所使用的key
      • sort

        public static java.util.List<com.alibaba.fastjson.JSONObject> sort​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                                           java.lang.String sortKey,
                                                                           SortEnum sortEnum)
        List-JSONObject集合排序
        参数:
        list - 需要处理的集合
        sortKey - 排序依据(JSONObject的key)
        sortEnum - 排序方式
        返回:
        处理后的List集合
      • sortT

        public static <T> java.util.List<T> sortT​(java.util.List<T> list,
                                                  java.lang.String sortField,
                                                  SortEnum sortEnum)
        List-T集合排序
        类型参数:
        T - 泛型
        参数:
        list - 需要处理的集合
        sortField - 排序字段
        sortEnum - 排序方式
        返回:
        处理后的List集合
      • reverse

        public static <T> java.util.List<T> reverse​(java.util.List<T> list,
                                                    java.lang.Class<T> clazz)
        反转集合
        类型参数:
        T - 泛型
        参数:
        list - 需要处理的集合
        clazz - 集合元素类型
        返回:
        反转后的List集合
      • distinct

        public static <T> java.util.List<T> distinct​(java.util.List<T> list)
        HashSet去重
        类型参数:
        T - 泛型
        参数:
        list - 需要去重的list
        返回:
        去重后的list
      • distinct

        public static java.util.List<com.alibaba.fastjson.JSONObject> distinct​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                                               java.lang.String distinctKey)
        List - JSONObject value去重

        根据参数distinctKey去重。

        参数:
        list - 需要处理的集合
        distinctKey - 去重的依据(JSON的key)
        返回:
        处理后的List集合
      • distinctCount

        public static java.util.List<com.alibaba.fastjson.JSONObject> distinctCount​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                                                    java.lang.String distinctKey,
                                                                                    SortEnum sortEnum)
        List-JSONObject集合去重统计与排序

        根据参数distinctKey(JSONObject的key)计算元素重复次数,并为每个JSONObject添加一个 frequency(频率元素),value的值是从整数1开始计数。

        示例:json.put("frequency", frequency)

        根据frequency(重复频率)排序

        参数:
        list - 需要处理的集合
        distinctKey - 去重的依据(JSONObject的key)
        sortEnum - 排序方式
        返回:
        处理后的List集合
      • distinctCountSortSelectKeep

        public static java.util.List<com.alibaba.fastjson.JSONObject> distinctCountSortSelectKeep​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                                                                  java.lang.String distinctKey,
                                                                                                  SortEnum sortEnum,
                                                                                                  java.lang.String keepKey,
                                                                                                  MaxOrMinEnum maxOrMinEnum)
        List-JSONObject集合——去重、统计、排序与元素选择性保留

        根据参数distinctKey(JSONObject的key),计算元素重复次数。并为每个JSONObject添加一个frequency(频率元素),value的值是从整数1开始计数。

        示例:json.put("frequency", frequency)

        根据frequency(重复频率)排序

        参数:
        list - 需要处理的集合
        distinctKey - 去重的依据(JSONObject的key)
        sortEnum - 排序方式
        keepKey - 需要保留的重复元素(此参数必须为可判断的Number类型:根据maxOrMinEnum选择保留最大值 最小值)如:根据id去重,保留age为最大或最小的JSONObject
        maxOrMinEnum - 保留的值:最大值 最小值
        返回:
        处理后的List集合
      • toList

        public static <T> java.util.ArrayList<T> toList​(T[] array)
        数组转List

        此方法为 Arrays.asList(Object...) 的安全实现

        类型参数:
        T - 数组中的对象类
        参数:
        array - 将被转换的数组
        返回:
        被转换数组的列表视图
      • toList

        public static <T> java.util.List<T> toList​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                   java.lang.Class<T> clazz)
        List-JSONObject 转 List-Class
        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        clazz - json转换的POJO类型
        返回:
        转换后的List
      • toList

        public static java.util.List<java.lang.String> toList​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                              java.lang.String keepKey)
        List-JSONObject 转 List-String
        参数:
        list - 需要转换的List
        keepKey - 保留值的key
        返回:
        转换后的List
      • toList

        public static <T> java.util.List<T> toList​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                   java.lang.String keepKey,
                                                   java.lang.Class<T> clazz)
        List-JSONObject 转 List-Class
        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        keepKey - 保留值的key
        clazz - 类型
        返回:
        转换后的List
      • toListAndDistinct

        public static java.util.List<java.lang.String> toListAndDistinct​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                                         java.lang.String keepKey)
        List - JSONObject 转 List - String 并去除重复元素
        参数:
        list - 需要转换的List
        keepKey - 保留值的key
        返回:
        处理后的List
      • toListAndDistinct

        public static <T> java.util.List<T> toListAndDistinct​(java.util.List<com.alibaba.fastjson.JSONObject> list,
                                                              java.lang.String keepKey,
                                                              java.lang.Class<T> clazz)
        List-JSONObject 转 List-Class 并去除重复元素
        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        keepKey - 保留值的key
        clazz - 类型
        返回:
        处理后的List
      • toJsonList

        public static java.util.List<com.alibaba.fastjson.JSONObject> toJsonList​(java.util.List<java.util.Map<java.lang.String,​java.lang.Object>> list)
        List - Map 转 List - JSONObject

        性能测试说明:
        测试CPU:i7-4710MQ
        测试结果:百万级数据平均200ms(毫秒)

        参数:
        list - 需要转换的List
        返回:
        转换后的List
      • toJsonList

        public static java.util.List<com.alibaba.fastjson.JSONObject> toJsonList​(com.alibaba.fastjson.JSONArray jsonArray)
        JSONArray 转 List - JSONObject

        性能测试报告:
        无类型转换(类型推断):toJsonList(List)
        安全模式强制类型转换:暂未测试

        参数:
        jsonArray - 需要转换的JSONArray
        返回:
        转换后的jsonList
      • toJsonListT

        public static <T> java.util.List<com.alibaba.fastjson.JSONObject> toJsonListT​(java.util.List<T> list)
        List - Class 转 List - JSONObject

        性能测试报告:
        安全模式强制类型转换:暂未测试

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsonList
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(com.alibaba.fastjson.JSONArray jsonArray)
        JSONArray 转 JSONObject[]

        对象引用转换,内存指针依旧指向元数据

        参数:
        jsonArray - 需要转换的JSONArray
        返回:
        转换后的jsons
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(java.util.List<com.alibaba.fastjson.JSONObject> list)
        List-JSONObject 转 JSONObject[]

        对象引用转换,内存指针依旧指向元数据

        参数:
        list - 需要转换的List
        返回:
        转换后的jsons
      • toJsonsT

        public static <T> com.alibaba.fastjson.JSONObject[] toJsonsT​(java.util.List<T> list)
        List - Class 转 JSONObject[]

        性能测试报告:
        安全模式强制类型转换:暂未测试

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsons
      • toJsonsTAndRemoveEmpty

        public static <T> com.alibaba.fastjson.JSONObject[] toJsonsTAndRemoveEmpty​(java.util.List<T> list)
        List - Class 转 JSONObject[] 并移除空对象

        性能测试报告:
        安全模式强制类型转换:暂未测试

        类型参数:
        T - 泛型
        参数:
        list - 需要转换的List
        返回:
        转换后的jsons
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(java.lang.String jsonString)
        String 转 JSONObject[]
        参数:
        jsonString - 需要转换的JSON字符串
        返回:
        JSON数组
      • toJsons

        public static com.alibaba.fastjson.JSONObject[] toJsons​(java.lang.String text,
                                                                java.lang.String regex,
                                                                java.lang.String key)
        String 转 JSONObject[]
        示例:
                
         		String text = "1,3,5,9";
         		JSONObject[] jsons = toJsons(text, ",", "id");
         		System.out.println(Arrays.toString(jsons));
         
         
        结果: [{"id":"1"}, {"id":"3"}, {"id":"5"}, {"id":"9"}]
        参数:
        text - 需要转换的文本
        regex - 文本分割表达式,同String类的split()方法
        key - JSON的key名称
        返回:
        转换后的jsons