当前位置: 首页 > article >正文

CollUtil详解

CollUtil 是 Hutool 工具库中的一个工具类,专门用于操作集合(Collection)。它提供了许多静态方法,可以简化对集合的常见操作,例如判断集合是否为空、合并集合、过滤集合等。

以下是关于 CollUtil 的详细介绍和常用方法:


1. CollUtil 的主要功能

CollUtil 提供了丰富的集合操作方法,涵盖以下方面:

  • 集合判空:检查集合是否为空或非空。
  • 集合创建:快速创建集合(如 List、Set)。
  • 集合操作:合并、交集、差集、去重等。
  • 集合过滤:根据条件过滤集合中的元素。
  • 集合转换:将集合转换为其他形式(如 Map、数组)。
  • 集合排序:对集合进行排序。

2. 常用方法

(1)集合判空

// 判断集合是否为空
boolean isEmpty = CollUtil.isEmpty(collection);// 判断集合是否非空
boolean isNotEmpty = CollUtil.isNotEmpty(collection);
  • 如果集合为 null 或长度为 0,则 isEmpty 返回 true

(2)集合创建

Hutool 提供了一些快捷方法来创建集合:


// 快速创建 List
List<String> list = CollUtil.newArrayList("A", "B", "C");// 快速创建 Set
Set<String> set = CollUtil.newHashSet("A", "B", "C");

(3)集合操作
合并集合

List<String> list1 = CollUtil.newArrayList("A", "B");
List<String> list2 = CollUtil.newArrayList("C", "D");// 合并两个集合
List<String> mergedList = CollUtil.addAll(list1, list2);
求交集

List<String> list1 = CollUtil.newArrayList("A", "B", "C");
List<String> list2 = CollUtil.newArrayList("B", "C", "D");// 求两个集合的交集
List<String> intersection = CollUtil.intersection(list1, list2); // ["B", "C"]
求差集

List<String> list1 = CollUtil.newArrayList("A", "B", "C");
List<String> list2 = CollUtil.newArrayList("B", "C", "D");// 求 list1 中有但 list2 中没有的元素
List<String> difference = CollUtil.subtract(list1, list2); // ["A"]
去重

List<String> list = CollUtil.newArrayList("A", "B", "A", "C");// 去重后的集合
List<String> distinctList = CollUtil.distinct(list); // ["A", "B", "C"]

(4)集合过滤

List<Integer> numbers = CollUtil.newArrayList(1, 2, 3, 4, 5);// 过滤出大于 3 的数字
List<Integer> filteredList = CollUtil.filter(numbers, num -> num > 3); // [4, 5]

(5)集合转换

List<String> list = CollUtil.newArrayList("A", "B", "C");// 将集合转换为数组
String[] array = CollUtil.toArray(list, String.class);// 将集合转换为 Map
Map<String, Integer> map = CollUtil.toMap(list, String::toString, String::length);
// 结果: {"A": 1, "B": 1, "C": 1}

(6)集合排序

List<Integer> numbers = CollUtil.newArrayList(5, 3, 8, 1);// 升序排序
CollUtil.sort(numbers); // [1, 3, 5, 8]// 自定义排序规则
CollUtil.sort(numbers, (a, b) -> b - a); // [8, 5, 3, 1]

3. 与其他工具类的对比

(1)与 Java 标准库的对比

Java 标准库中也有一些集合操作方法(如 Collections 类),但它们的功能相对有限。CollUtil 提供了更多便捷的方法,例如集合的交集、差集、过滤等。

(2)与 Apache Commons Collections 的对比

Apache Commons Collections 也提供了类似的集合工具类(如 CollectionUtils),但 CollUtil 更加轻量级,且功能更丰富。


4. 依赖引入

要使用 CollUtil,需要在项目中引入 Hutool 工具库:


<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.20</version>
</dependency>

5. 总结

CollUtil 是 Hutool 工具库中非常实用的一个工具类,能够极大地简化集合操作。它的主要优势包括:

  • 功能丰富:提供集合判空、合并、交集、差集、过滤、转换等多种操作。
  • 使用方便:方法命名直观,调用简单。
  • 性能优化:相比手动实现集合操作,CollUtil 提供了高效的实现方式。

如果你正在使用 Hutool 工具库,强烈推荐尝试 CollUtil 来处理集合相关的逻辑。

相关文章:

CollUtil详解

CollUtil 是 Hutool 工具库中的一个工具类&#xff0c;专门用于操作集合&#xff08;Collection&#xff09;。它提供了许多静态方法&#xff0c;可以简化对集合的常见操作&#xff0c;例如判断集合是否为空、合并集合、过滤集合等。 以下是关于 CollUtil 的详细介绍和常用方法…...

Elasticsearch的运维

Elasticsearch 运维工作详解&#xff1a;从基础保障到性能优化 Elasticsearch&#xff08;简称 ES&#xff09;作为分布式搜索和分析引擎&#xff0c;其运维工作需要兼顾集群稳定性、性能效率及数据安全。以下从核心运维模块展开说明&#xff0c;结合实践场景提供可落地的方案…...

Linux编辑器——vim的使用

vim是一款多模式的编辑器。 基本操作&#xff1a;vim打开默认是命令模式&#xff0c;也就是输入命令然后系统执行指令&#xff0c;想要写代码&#xff0c;只需输入字母i&#xff0c;就进入插入模式&#xff0c;写完代码想要退出&#xff0c;按一下Esc&#xff0c;退回到命令模…...

线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类

乳腺癌数据是sklearn中自带的数据集&#xff0c;需要通过相关特征对是否患有乳腺癌进行分类。 数据清洗与建模 首先加载相关库和相关数据 from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression import numpy as np import…...

Jenkins分配对应项目权限与用户管理

在日常开发过程中经常会出现用户和权限管理问题&#xff0c;没有配置trigger时&#xff0c;通常需要我们手动构建&#xff0c;但此时前端和后端的朋友没有build权限&#xff0c;导致每次dev环境测试都需要麻烦我们手动去构建&#xff0c;消息传达不及时则会降低开发效率。 现有…...

Mate桌面环境系统与终端模拟器参数配置

说明&#xff1a;   MATE桌面环境在使用中会优化一些参数配置&#xff0c;例如&#xff1a;电源选项、屏幕配置、字体配置、终端模拟器&#xff08;Mate Terminal&#xff09;配置等等。   通常工程师会根据自己喜好调整一些参数&#xff0c;修改后参数的保存位置在/home/u…...

fabric 是一个开源框架,用于使用 AI 增强人类能力。它提供了一个模块化框架,用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题

​一、软件介绍 文末提供程序和源码下载 fabric 是一个开源框架&#xff0c;用于使用 AI 增强人类能力。它提供了一个模块化框架&#xff0c;用于使用一组可在任何地方使用的众包人工智能提示来解决特定问题。 二、What and why 什么和为什么 自 2023 年初和 GenAI 以来&…...

基于PDF流式渲染的Word文档在线预览技术

一、背景介绍 在系统开发中&#xff0c;实现在线文档预览与编辑功能是许多项目的核心需求&#xff0c;但在实际的开发过程中&#xff0c;我们经常会面临以下难点&#xff1a; 1&#xff09;格式兼容性问题&#xff1a;浏览器原生不支持解析Word二进制格式&#xff0c;直接渲染会…...

华为仓颉语言初识:结构体struct和类class的异同

前言 华为仓颉语言是鸿蒙原生应用的一种新的编程语言&#xff0c;采用面向对象的编程思想&#xff0c;为开发者带来新的开发体验。不仅可以和 ArkTs 相互调用&#xff0c;更能提升应用程序的性能&#xff0c;更重要的是仓颉语言的特点结合了 java 和 C 的特点。对开发者来说比…...

数据仓库基础知识总结

1、什么是数据仓库&#xff1f; 权威定义&#xff1a;数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持管理决策。 1&#xff09;数据仓库是用于支持决策、面向分析型数据处理&#xff1b; 2&#xff09;对多个异构的数据源有效集…...

vue2使用element中多选组件el-checkbox-group,数据与UI更新不同步

问题描述 使用element多选checkbox组件&#xff0c;点击勾选取消勾选&#xff0c;视图未变化&#xff0c;再次点击表单其他元素&#xff0c;多选组件勾选状态发生变化&#xff0c;视图和数据未同步 第一次尝试&#xff1a;再el-checkbox-group多选父组件上增加点击事件&…...

linux磁盘分区及挂载、fdisk命令详解

文章目录 1.Linux磁盘分区概念精要‌1.1 分区的定义‌1.2 多分区的必要性‌1.2.1 数据安全隔离‌1.2.2 提升存储效率‌1.2.3 防止系统资源耗尽‌1.2.4 fdisk用法介绍 2.服务器挂载磁盘实战详细步骤2.1检查磁盘情况及格式化2.2磁盘分区2.3 磁盘目录挂载2.3.1 创建挂载目录2.3.2 …...

anaconda 安装教程以及常用命令

安装教程 安装教程 常用命令 Conda是一个非常强大的包管理和环境管理工具&#xff0c;以下是一些常用命令&#xff1a; 环境管理命令 创建环境 创建指定Python版本的环境&#xff1a;例如&#xff0c;创建名为 myenv&#xff0c;Python版本为3.9的环境。conda create -n m…...

C/C++的OpenCV的锐化

图像锐化技术&#xff1a;使用 C/C的OpenCV 增强图像细节 ✨ 图像锐化是一种常见的图像处理技术&#xff0c;其目的是增强图像的边缘和细节&#xff0c;使图像看起来更清晰、更鲜明。这在很多应用中都非常有用&#xff0c;例如医学成像、卫星图像分析以及提升普通照片的视觉质…...

Eigen矩阵存储顺序以及转换

一、Eigen矩阵存储顺序 在矩阵运算和线性代数中,"行优先"(Row-major)和"列优先"(Column-major)是两种不同的存储方式,它们决定了多维数组(如矩阵)在内存中的布局顺序。 1. 行优先(Row-major) 定义:矩阵按行顺序存储在内存中,即第一行的所有元…...

OpenLayers 加载ArcGIS瓦片数据

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 随着GIS应用的不断发展&#xff0c;Web地图也越来越丰富&#xff0c;除了像ESRI、超图、中地数码这样GIS厂商有各自的数据源格式&#xff0c;也有Google…...

2025蓝桥杯WP

引言 在2025年蓝桥杯网络安全赛道中&#xff0c;我们面对涵盖Web安全、逆向工程、PWN、取证分析以及加密解密等多领域的挑战&#xff0c;要求选手具备扎实且全面的安全技术与实战能力。本文将以实战记录的形式&#xff0c;逐题详细还原解题思路与操作步骤&#xff0c;并配以相…...

数字人教师:开启教育智慧革新之旅

在科技浪潮的推动下&#xff0c;教育领域正经历一场由数字人教师引领的深刻变革&#xff0c;这不仅是技术与教育融合的创新实践&#xff0c;更是教育模式重塑的关键路径。 一、数字人教师的崛起&#xff1a;教育变革的必然选择 随着互联网、大数据、人工智能等前沿技术的飞速…...

Linux中Java开发、部署和运维常用命令

在Java开发、部署和运维过程中&#xff0c;Linux操作系统常用的一些命令可以帮助开发人员、运维人员管理系统、查看日志、控制进程等。以下是一些常见的Linux命令&#xff1a; 1. 文件和目录操作 ls&#xff1a;列出当前目录下的文件和文件夹。 ls -l&#xff1a;显示详细信息…...

详解srs流媒体服务器的集群

前言&#xff1a; 什么是集群 集群就是多台计算机或服务器等资源&#xff0c;联在一起像一台大机器一样工作。比如一群蚂蚁一起搬东西&#xff0c;这些蚂蚁就类似集群里的各个部分。 为什么要集群 性能更强&#xff1a;能把任务分到多个机器上做&#xff0c;一起处理更快&…...

ubuntu22.04 安装 SecureCRT8.7.3

用到的全部软件&#xff0c;都放在这个网盘里面了&#xff0c;自取。 链接: https://pan.baidu.com/s/1AR6Lj8FS7bokMR5IrLmsIw?pwd3dzv 提取码: 3dzv 如果链接失效了&#xff0c;关注公号&#xff1a;每日早参&#xff0c;回复&#xff1a;资源&#xff0c;即可免费获取&…...

Day 37

继续之前的学习 过拟合的判断 import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler import time import matpl…...

libvirt设置虚拟机mtu实现原理

背景 云计算场景下,可以动态调整虚拟机mtu,提高虚拟机网络性能。设置虚拟机(VM)virtio网卡的MTU(Maximum Transmission Unit)涉及 ​​宿主机(Host)、QEMU/KVM、vhost-net后端​​ 和 ​​虚拟机内部的virtio驱动​​之间的协作。 原理分析 1.libvirt设置mtu分析 libv…...

AstroNex空间任务智能控制研究与训练数据集

数据集概述 AstroNex空间任务智能控制研究与训练数据集是朗迪锋科技基于Multiverse平台精心打造的首个全面覆盖航天器智能控制全周期的综合数据集产品。该数据集汇集了轨道动力学、姿态控制、机器视觉、环境感知等多维度数据&#xff0c;为航天器智能算法研发提供丰富的训练与…...

汽车副水箱液位传感器介绍

汽车副水箱液位传感器是现代车辆冷却系统中不可或缺的关键部件,其核心功能在于实时监测冷却液存量,确保发动机在最佳温度范围内稳定运行。随着汽车电子化程度不断提升,这一看似简单的传感器已发展成为集机械、电子、材料技术于一体的精密装置,其工作原理与技术演进值得深入…...

Docker+MobaXterm+x11实现容器UI界面转发本地

本文记录了搭建一个可直接ssh访问的container&#xff0c;并可通过x11转发界面的实现过程 0.1 实验环境 PC&#xff1a;windows 11 Server&#xff1a;Ubuntu 18.04 Docker image&#xff1a;Ubuntu 18.04 1. 获取Ubuntu 18.04的镜像 使用Dockerfile获取镜像&#xff0c;对…...

IEEE出版|2025年智能制造、机器人与自动化国际学术会议 (IMRA2025)

【重要信息】 会议官网&#xff1a;www.icimra.com 会议时间: 2025年11月14日-16日 会议地点: 中国湛江 截稿日期&#xff1a;2025年09月16日(一轮截稿) 接收或拒收通知&#xff1a;文章投递后5-7个工作日 会议提交检索&#xff1a;EI Compendex, Scopus IEEE出版|2025年…...

EasyRTC嵌入式SDK音视频实时通话助力WebRTC技术与智能硬件协同发展

一、概述 在万物互联的数字化浪潮下&#xff0c;智能硬件已广泛渗透生活与工业领域&#xff0c;实时音视频通信成为智能硬件实现高效交互的核心需求。WebRTC作为开源实时通信技术&#xff0c;为浏览器与移动应用提供免插件的音视频通信能力&#xff0c;而EasyRTC通过深度优化音…...

Higress MCP Server 安全再升级:API 认证为 AI 连接保驾护航

Higress MCP Server 安全再升级&#xff1a;API 认证为 AI 连接保驾护航 Higress 作为一款强大的 AI 原生 API 网关&#xff0c;致力于铺设 AI 与现实世界之间最短、最安全、最具成本效益的连接路径。其核心能力之一便是支持将现有的 OpenAPI 规范无缝转换为 MCP Server&#…...

多个vue2工程共享node_modules

手头有多个vue2项目&#xff0c;它们每个都需要一个node_modules&#xff0c;拷贝起来超级麻烦。于是想到能否共享一个node_modules呢&#xff1f;&#xff1f; 方法其实挺多&#xff0c;我选择了一个较简单的&#xff1a;符号连接法(win11平台) 创建方法很简单&#xff1a;比…...