程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 克隆

  • 类型转换

  • 日期时间

  • IO流相关

  • 工具类

  • 语言特性

  • JavaBean

  • 集合类

    • 集合工具 - `CollUtil`
      • 1. join 方法
        • 示例:将集合转换为字符串
      • 2. sortPageAll 方法
        • 示例:合并、排序并分页获取集合数据
      • 3. popPart 方法
        • 示例:从栈中弹出元素
      • 4. append 方法
        • 示例:在数组末尾追加元素
      • 5. resize 方法
        • 示例:调整集合大小
      • 6. addAll 方法
        • 示例:批量添加元素到集合
      • 7. sub 方法
        • 示例:截取集合的子集
      • 8. isEmpty 和 isNotEmpty 方法
        • 示例:判断集合是否为空
      • 9. zip 方法
        • 示例:合并集合为 Map
    • 列表工具 - `ListUtil`
    • 迭代器工具 - `IterUtil`
    • 有界优先队列 - `BoundedPriorityQueue`
    • 线程安全的 HashSet - `ConcurrentHashSet`
    • 集合串行流工具 - `CollStreamUtil`
    • 行遍历器 - `LineIter`
  • Map

  • Codec编码

  • 文本操作

  • 注解

  • 比较器

  • 异常

  • 数学

  • 线程和并发

  • 图片

  • 网络

  • 源码编译

  • 配置文件

  • 日志

  • 缓存

  • JSON

  • 加密解密

  • DFA查找

  • HTTP客户端

  • 定时任务

  • 扩展

  • 切面

  • 脚本

  • Office文档操作

  • 系统调用

  • 图形验证码

  • 网络Socket

  • JWT

  • Hutoll
  • 集合类
scholar
2024-08-20
目录

集合工具 - CollUtil

# 集合工具 - CollUtil

简介

CollUtil 是 Hutool 提供的一个集合操作工具类,提供了丰富的集合操作方法,包括集合判空、排序、分页、子集提取等功能,简化了集合处理的工作流程。

# 1. join 方法

join 方法用于将集合中的元素连接成一个字符串。这个方法是 StrUtil.split 的反方法,支持各种类型的集合对象,连接时会调用每个对象的 toString() 方法。

# 示例:将集合转换为字符串

import cn.hutool.core.collection.CollUtil;

import java.util.List;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建一个集合
        List<String> colList = CollUtil.newArrayList("a", "b", "c", "d", "e");

        // 使用 join 方法将集合转换为带有分隔符的字符串
        String result = CollUtil.join(colList, "#");

        // 输出结果:a#b#c#d#e
        System.out.println(result);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 方法签名:

    public static String join(Collection<?> collection, CharSequence delimiter)
    
    1
  • 参数说明:

    • collection:要进行连接的集合。
    • delimiter:分隔符,用于连接集合中的每个元素。
  • 返回值:返回连接后的字符串。

  • 实际开发场景:常用于将集合数据转换为可读性较高的字符串格式,如生成 CSV 数据、日志记录、拼接参数等。


# 2. sortPageAll 方法

sortPageAll 方法用于将多个集合合并到一个列表中,根据指定的比较器排序,并分页取出指定的数据,类似于数据库的多表查询后排序分页。

# 示例:合并、排序并分页获取集合数据

import cn.hutool.core.collection.CollUtil;

import java.util.Comparator;
import java.util.List;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建一个整数比较器
        Comparator<Integer> comparator = Integer::compareTo;

        // 创建多个列表
        List<Integer> list1 = CollUtil.newArrayList(1, 2, 3);
        List<Integer> list2 = CollUtil.newArrayList(4, 5, 6);
        List<Integer> list3 = CollUtil.newArrayList(7, 8, 9);

        // 合并、排序并分页获取数据
        List<Integer> result = CollUtil.sortPageAll(0, 2, comparator, list1, list2, list3);

        // 输出结果:[1, 2]
        System.out.println(result);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • 方法签名:

    public static <T> List<T> sortPageAll(int start, int end, Comparator<T> comparator, Collection<T>... collections)
    
    1
  • 参数说明:

    • start:起始位置,包含该位置。
    • end:结束位置,不包含该位置。
    • comparator:比较器,用于排序。
    • collections:可变参数,表示多个集合。
  • 返回值:返回排序并分页后的集合数据。

  • 实际开发场景:在需要对多个集合数据进行统一排序并分页处理时,模拟数据库查询和分页的场景。


# 3. popPart 方法

popPart 方法用于从栈中弹出指定数量的元素,弹出后会从原栈中删除这些元素。

# 示例:从栈中弹出元素

import cn.hutool.core.collection.CollUtil;

import java.util.List;
import java.util.Stack;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建一个栈并填充数据
        Stack<String> stack = CollUtil.newStack("a", "b", "c", "d");

        // 弹出两个元素
        List<String> poppedElements = CollUtil.popPart(stack, 2);

        // 输出弹出的元素:[a, b]
        System.out.println(poppedElements);

        // 输出栈剩余元素:[c, d]
        System.out.println(stack);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  • 方法签名:

    public static <T> List<T> popPart(Stack<T> stack, int partSize)
    
    1
  • 参数说明:

    • stack:栈对象,类型为 Stack<E>。
    • partSize:要弹出的元素数量。
  • 返回值:返回弹出的元素列表。

  • 实际开发场景:适用于需要批量从栈中获取元素的场景,如实现撤销操作时的一步步回退。


# 4. append 方法

append 方法用于在数组末尾添加一个元素。内部使用了 System.arraycopy,适用于少量元素的追加。

# 示例:在数组末尾追加元素

import cn.hutool.core.collection.CollUtil;

import java.util.Arrays;

public class CollUtilExample {
    public static void main(String[] args) {
        // 原始数组
        String[] array = {"a", "b", "c"};

        // 追加元素
        String[] newArray = CollUtil.append(array, "d");

        // 输出结果:[a, b, c, d]
        System.out.println(Arrays.toString(newArray));
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 方法签名:

    public static <T> T[] append(T[] array, T element)
    
    1
  • 参数说明:

    • array:原数组。
    • element:要添加的元素。
  • 返回值:返回追加元素后的新数组。

  • 实际开发场景:当需要在固定大小的数组中追加元素时,无需转换成集合后再操作。


# 5. resize 方法

resize 方法用于调整集合大小,若新大小比原来小则截断,若大则补空位。

# 示例:调整集合大小

import cn.hutool.core.collection.CollUtil;

import java.util.List;

public class CollUtilExample {
    public static void main(String[] args) {
        // 原始列表
        List<String> list = CollUtil.newArrayList("a", "b", "c");

        // 调整大小为 5
        List<String> resizedList = CollUtil.resize(list, 5);

        // 输出结果:[a, b, c, null, null]
        System.out.println(resizedList);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 方法签名:

    public static <T> List<T> resize(List<T> list, int newSize)
    
    1
  • 参数说明:

    • list:要调整的集合。
    • newSize:调整后的大小。
  • 返回值:返回调整后的新集合。

  • 实际开发场景:用于动态调整集合大小的场景,如需要将数据裁剪到特定范围或预留位置给未来的数据。


# 6. addAll 方法

addAll 方法用于将多个元素添加到一个集合中。

# 示例:批量添加元素到集合

import cn.hutool.core.collection.CollUtil;

import java.util.List;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建目标集合
        List<String> list = CollUtil.newArrayList("a");

        // 批量添加元素
        CollUtil.addAll(list, "b", "c", "d");

        // 输出结果:[a, b, c, d]
        System.out.println(list);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 方法签名:

    public static <T> boolean addAll(Collection<T> collection, T... elements)
    
    1
  • 参数说明:

    • collection:目标集合。
    • elements:要添加的元素。
  • 返回值:返回添加是否成功的布尔值。

  • 实际开发场景:适用于需要将多个元素批量添加到集合中的场景,如数据初始化、集合合并等。


# 7. sub 方法

sub 方法用于对集合进行切片操作,自动处理越界问题,避免 IndexOutOfBoundsException 异常。

# 示例:截取集合的子集

import cn.hutool.core.collection.CollUtil;

import java.util.List;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建集合
        List<String> list = CollUtil.newArrayList("a", "b", "c", "d", "e");

        // 截取集合中的一部分
        List<String> subList = CollUtil.sub(list, 1, 3);

        // 输出结果:[b, c]
        System.out.println(subList);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 方法签名:

    public static <T> List<T> sub(List<T> list, int start, int end)
    
    1
  • 参数说明:

    • list:要切片的集合。
    • start:起始位置,包含该

位置。

  • end:结束位置(不包含)。

  • 返回值:返回截取的子集合。

  • 实际开发场景:在需要截取集合的一部分元素时,如分页显示、区间统计等操作。


# 8. isEmpty 和 isNotEmpty 方法

isEmpty 和 isNotEmpty 方法用于判断集合是否为空(包括 null 和无元素的集合)。

# 示例:判断集合是否为空

import cn.hutool.core.collection.CollUtil;

import java.util.List;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建一个空集合
        List<String> list = CollUtil.newArrayList();

        // 判断集合是否为空
        boolean isEmpty = CollUtil.isEmpty(list);
        boolean isNotEmpty = CollUtil.isNotEmpty(list);

        // 输出结果:true false
        System.out.println(isEmpty + " " + isNotEmpty);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  • 方法签名:

    public static boolean isEmpty(Collection<?> collection)
    public static boolean isNotEmpty(Collection<?> collection)
    
    1
    2
  • 参数说明:

    • collection:要判断的集合。
  • 返回值:true 表示集合为空或不为空。

  • 实际开发场景:在操作集合前进行空值判断,避免空指针异常或其他逻辑错误。


# 9. zip 方法

zip 方法用于将两个集合元素一一对应,组成一个 Map。该方法的灵感来源于 Python 的 zip 函数。

# 示例:合并集合为 Map

import cn.hutool.core.collection.CollUtil;

import java.util.Collection;
import java.util.List;
import java.util.Map;

public class CollUtilExample {
    public static void main(String[] args) {
        // 创建键和值的集合
        Collection<String> keys = CollUtil.newArrayList("a", "b", "c", "d");
        Collection<Integer> values = CollUtil.newArrayList(1, 2, 3, 4);

        // 合并集合为 Map
        Map<String, Integer> map = CollUtil.zip(keys, values);

        // 输出结果:{a=1, b=2, c=3, d=4}
        System.out.println(map);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • 方法签名:

    public static <K, V> Map<K, V> zip(Collection<K> keys, Collection<V> values)
    
    1
  • 参数说明:

    • keys:键的集合。
    • values:值的集合。
  • 返回值:返回由键和值组成的 Map。

  • 实际开发场景:用于将两个集合对应合并成 Map,适合在需要根据键值对进行数据映射的场景,如配置解析、动态数据结构生成等。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
空检查属性获取工具 - `Opt`
列表工具 - `ListUtil`

← 空检查属性获取工具 - `Opt` 列表工具 - `ListUtil`→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式