类 ListUtils


  • public class ListUtils
    extends cn.hutool.core.collection.ListUtil
    List工具类
    从以下版本开始:
    2017年10月27日
    作者:
    ylyue
    • 构造器详细资料

      • ListUtils

        public ListUtils()
    • 方法详细资料

      • isEmpty

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

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

        public static <T> T get​(List<?> list,
                                Class<T> clazz)
        获得List数组中对应类型的第一个值
        类型参数:
        T - 想要的类型
        参数:
        list - List数组
        clazz - 想要的类型Class
        返回:
        找到的第一个值或null
      • grouping

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

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

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

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

        public static com.alibaba.fastjson.JSONArray merge​(com.alibaba.fastjson.JSONArray array,
                                                           com.alibaba.fastjson.JSONObject json,
                                                           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​(List<com.alibaba.fastjson.JSONObject> list1,
                                 List<com.alibaba.fastjson.JSONObject> list2,
                                 String key1,
                                 String key2)
        List合并

        list2 合并到 list1 里面

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

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

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

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

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

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

        根据参数distinctKey去重。

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

        public static List<com.alibaba.fastjson.JSONObject> distinctCount​(List<com.alibaba.fastjson.JSONObject> list,
                                                                          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 List<com.alibaba.fastjson.JSONObject> distinctCountSortSelectKeep​(List<com.alibaba.fastjson.JSONObject> list,
                                                                                        String distinctKey,
                                                                                        SortEnum sortEnum,
                                                                                        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> ArrayList<T> toList​(T[] array)
        数组转List

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        public static <T> List<com.alibaba.fastjson.JSONObject> toJsonListT​(List<T> list)
        List - ClassList - 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​(List<com.alibaba.fastjson.JSONObject> list)
        List-JSONObject 转 JSONObject[]

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

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

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

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

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

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

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

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

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

        public static com.alibaba.fastjson.JSONObject[] toJsons​(String text,
                                                                String regex,
                                                                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
      • toSnakeCaseJsonList

        public static List<com.alibaba.fastjson.JSONObject> toSnakeCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)

        JsonList属性命名策略转换-下划线命名法

        参数:
        list - 需要转换的jsonList
        返回:
        转换后的jsonList
      • toSnakeCaseJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toSnakeCaseJsonListT​(List<T> list)

        JsonList属性命名策略转换-下划线命名法

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

        public static List<com.alibaba.fastjson.JSONObject> toUnderlineCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)

        JsonList属性命名策略转换-下划线命名法

        参数:
        list - 需要转换的jsonList
        返回:
        转换后的jsonList
      • toUnderlineCaseJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toUnderlineCaseJsonListT​(List<T> list)

        JsonList属性命名策略转换-下划线命名法

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

        public static List<com.alibaba.fastjson.JSONObject> toCamelCaseJsonList​(List<com.alibaba.fastjson.JSONObject> list)

        JsonList属性命名策略转换-驼峰命名法

        参数:
        list - 需要转换的jsonList
        返回:
        转换后的jsonList
      • toCamelCaseJsonListT

        public static <T> List<com.alibaba.fastjson.JSONObject> toCamelCaseJsonListT​(List<T> list)

        JsonList属性命名策略转换-驼峰命名法

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