CollectionUtils

使用 CollectionUtils 类的常用方法

在Java开发中,我们经常需要对集合进行各种操作,而Apache Commons Collections库提供了一个方便的工具类 CollectionUtils,其中包含了许多实用的方法。在这篇博客中,我们将深入了解一些常用的方法,并提供详细的示例。

1. isEmpty

// Check if a list is empty
List<String> emptyList = new ArrayList<>();
boolean isEmpty = CollectionUtils.isEmpty(emptyList);
System.out.println("Is the list empty? " + isEmpty);//Is the list empty? true

这个方法用于检查给定的集合是否为空。在上面的例子中,我们创建了一个空的 ArrayList,然后使用 isEmpty 方法检查它是否为空,最后打印结果。

2. isNotEmpty

// Check if a list is not empty
List<String> nonEmptyList = Arrays.asList("item1", "item2");
boolean isNotEmpty = CollectionUtils.isNotEmpty(nonEmptyList);
System.out.println("Is the list not empty? " + isNotEmpty);//Is the list empty? true

isEmpty 相反,isNotEmpty 方法用于检查集合是否不为空。我们创建了一个包含一些元素的列表,并使用 isNotEmpty 方法进行检查。

isEmptyisNotEmpty

  • 时间复杂度: O(1) - 常数时间。这是因为这两个方法只需检查集合是否为 null 或其大小是否为零。
  • 适用场景: 用于快速检查集合是否为空。

3. size

// Get the size of a list
int size = CollectionUtils.size(nonEmptyList);
System.out.println("Size of the list: " + size);//Size of the list: 2

size 方法返回给定集合的大小。在这个例子中,我们获取了之前非空列表的大小并打印输出。

size

  • 时间复杂度: O(1) - 常数时间。这是因为 size 方法通常由集合实现提供,直接返回已存储的大小。
  • 适用场景: 适用于快速获取集合的大小。

4. addAll

// Merge two lists
List<String> destinationList = new ArrayList<>();
CollectionUtils.addAll(destinationList, "item3", "item4");
System.out.println("Merged list: " + destinationList);//Merged list: [item3, item4]

addAll 方法用于将一个集合的所有元素添加到另一个集合中。在这里,我们创建了一个目标列表,并使用 addAll 将两个元素添加到这个列表中。

addAll

  • 时间复杂度: O(n) - 线性时间,其中 n 是要添加的元素数量。
  • 适用场景: 用于将一个集合的所有元素添加到另一个集合。在元素数量较大时可能会影响性能。

5. removeAll

// Remove elements from a list
CollectionUtils.removeAll(destinationList, "item3");
System.out.println("List after removal: " + destinationList);//List after removal: []

removeAll 方法用于从集合中移除指定的元素。在这个例子中,我们从目标列表中移除了一个元素,并打印输出修改后的列表。

removeAll

  • 时间复杂度: O(n) - 线性时间,其中 n 是要移除的元素数量。
  • 适用场景: 用于从集合中移除指定的元素。

6. intersection

// Get the intersection of two lists
List<String> list1 = Arrays.asList("apple", "orange", "banana");
List<String> list2 = Arrays.asList("banana", "kiwi", "apple");
List<String> intersection = (List<String>) CollectionUtils.intersection(list1, list2);
System.out.println("Intersection of lists: " + intersection);//Intersection of lists: [banana, apple]

intersection 方法返回两个集合的交集。在这里,我们创建了两个包含水果的列表,并使用 intersection 方法获取它们的交集。

7. union

// Get the union of two lists
List<String> union = (List<String>) CollectionUtils.union(list1, list2);
System.out.println("Union of lists: " + union);//Union of lists: [apple, orange, banana, kiwi]

union 方法返回两个集合的并集。在这个例子中,我们使用 union 方法获取两个水果列表的并集。

8. disjunction

// Get the disjunction of two lists
List<String> disjunction = (List<String>) CollectionUtils.disjunction(list1, list2);
System.out.println("Disjunction of lists: " + disjunction);//Disjunction of lists: [orange, kiwi]

disjunction 方法返回两个集合的互斥集合,即不属于交集的部分。在这里,我们使用 disjunction 方法获取两个列表的互斥部分。

9. subtract

// Subtract one list from another
CollectionUtils.subtract(list1, list2);
System.out.println("List1 after subtracting list2: " + list1);//List1 after subtracting list2: [orange]

subtract 方法用于从第一个集合中移除第二个集合中包含的元素。在这个例子中,我们使用 subtract 方法从 list1 中移除了与 list2 重叠的元素。

subtract

  • 时间复杂度: O(m + n) - 线性时间,其中 m 和 n 分别是两个集合的大小。
  • 适用场景: 用于从一个集合中移除另一个集合包含的元素。

10. filter

// Filter elements based on a condition
List<String> filteredList = (List<String>) CollectionUtils.select(list1, s -> s.startsWith("a"));
System.out.println("Filtered list: " + filteredList);//Filtered list: [apple]

filter 方法根据给定的条件保留集合中的元素。在这里,我们使用 filter 方法保留了以字母 “a” 开头的元素。

filter

  • 时间复杂度: O(n) - 线性时间,其中 n 是集合的大小。
  • 适用场景: 用于根据条件筛选集合中的元素。

11. transform

// Transform elements in a list
List<Integer> lengths = (List<Integer>) CollectionUtils.collect(list1, String::length);
System.out.println("Lengths of items in the list: " + lengths);//Lengths of items in the list: [5, 6, 6]

transform 方法用于对集合中的元素进行转换。在这个例子中,我们使用 transform 方法获取了 list1 中每个字符串元素的长度,并将结果存储在 lengths 列表中。

transform

  • 时间复杂度: O(n) - 线性时间,其中 n 是集合的大小。
  • 适用场景: 用于对集合中的元素进行转换。

12. countMatches

// Count elements that match a condition
long count = CollectionUtils.countMatches(list1, s -> s.length() > 5);
System.out.println("Number of items with length > 5: " + count);//Number of items with length > 5: 2

countMatches 方法用于计算满足特定条件的元素数量。在这个例子中,我们计算了 list1 中长度大于 5 的元素的数量。

countMatches

  • 时间复杂度: O(n) - 线性时间,其中 n 是集合的大小。
  • 适用场景: 用于计算满足特定条件的元素数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/588900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIT线性代数笔记-第35讲-期末复习

目录 35.期末复习打赏 35.期末复习 已知一个矩阵 A A A满足 A x ⃗ [ 1 0 0 ] A \vec{x} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} Ax ​100​ ​无解且 A x ⃗ [ 0 1 0 ] A \vec{x} \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} Ax ​010​ ​仅有一个解 (1)求 A A A的…

call的一点奇怪的使用

Object.prototype.hasOwnProperty.call(initModal, method) 解释&#xff1a; 在这个特定的代码中&#xff0c;它用于检查 initModal 对象是否具有名为 method 的属性。 Object.prototype.hasOwnProperty 是一个内置的 JavaScript 方法&#xff0c;它可以检查一个对象是否具有…

linux安装rabbitmq

文章目录 前言一、下载安装包二、erlang1.安装依赖2.解压3.安装4.环境变量5.验证 三、rabbitmq1.安装依赖2.解压3.新建目录4.rabbitmq.env.conf5.rabbitmq.conf6.环境变量7.启动8.验证9.停止 四、安装web1.安装插件2.访问控制台界面 五、开机启动1.编写脚本2.设置开机启动3.测试…

硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件扩展 (SHE)的区别

术语 硬件安全模块 (HSM) &#xff1a;Hardware Security Modules硬件安全引擎 (HSE) &#xff1a;Hardware Security Engines安全硬件扩展 (SHE) &#xff1a; Secure Hardware Extensions 介绍 在汽车行业中&#xff0c;硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件…

Android长按图标展示快捷方式

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {new Thread(() -> {// 获取ShortcutManager实例ShortcutManager shortcutManager getSystemService(ShortcutManager.class);// 创建要添加的快捷方式ShortcutInfo.Builder shortcutBuilder new ShortcutInfo.Bui…

Java中如何实现负载均衡策略

1. 引言 当在Java应用程序中需要处理负载均衡时&#xff0c;通常涉及到多个服务器或服务实例&#xff0c;以确保请求能够分散到这些实例上&#xff0c;从而提高系统性能、可用性和可伸缩性。实现负载均衡策略可以通过多种方法&#xff0c;包括基于权重、轮询、随机选择、最少连…

[蓝桥杯2020国赛]答疑

答疑 题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下&#xff1a; 首先进入办公室&#xff0c;编号为 i 的同学需要 si​ 毫秒的时间。然后同学问…

大语言模型训练数据集

大语言模型的数据集有很多&#xff0c;以下是一些常用的&#xff1a; - 中文维基百科&#xff1a;这是一个包含大量中文文本的数据集&#xff0c;可用于训练中文语言模型。 - 英文维基百科&#xff1a;这是一个包含大量英文文本的数据集&#xff0c;可用于训练英文语言模型。 …

python脚本实现一次提取多个文件下的图片

problem formulation 有时候下载的数据集如下&#xff0c;就很烦&#xff0c;一个里面就一张图片 code import os import shutil# 定义源目录和目标目录 source_dir ./dataset/data/Detection destination_dir ./dataset/data/img# 确保目标目录存在&#xff0c;如果不存…

css原子化的框架Tailwindcss的使用教程(原始html和vue项目的安装与配置)

安装教程 中文官网教程 原始的HTML里面使用 新建文件夹npm init -y 初始化项目 安装相关依赖 npm install -D tailwindcss postcss-cli autoprefixer初始化两个文件 npx tailwindcss init -p根目录下新建src/style.css tailwind base; tailwind components; tailwind ut…

图神经网络--GNN从入门到精通

图神经网络--GNN从入门到精通 一、图的基本表示和特征工程1.1 什么是图1.2 图的基本表示1.3 图的性质--度&#xff08;degree)1.4 连通图&#xff0c;连通分量1.5有向图连通性1.6图直径1.7度中心性1.7特征中心性&#xff08; Eigenvector Centrality&#xff09;1.8中介中心性 …

CentOS 7 实战指南:目录操作命令详解

写在前面 想要在 CentOS 7 系统下更高效地进行目录操作吗&#xff1f;不要犹豫&#xff0c;在这里我为你准备了一篇精彩的技术文章&#xff01;这篇文章将带您深入了解 CentOS 7 下目录操作相关命令的使用方法。无论您是新手还是有一定经验的用户&#xff0c;这篇文章都将为您…

EasyNTS端口穿透服务新版本发布 0.8.7 增加隧道流量总数记录,可以知晓设备哪个端口耗费流量了

EasyNTS上云平台可通过远程访问内网应用&#xff0c;包含网络桥接、云端运维、视频直播等功能&#xff0c;极大地解决了现场无固定IP、端口不开放、系统权限不开放等问题。平台可提供一站式上云服务&#xff0c;提供直播上云、设备上云、业务上云、运维上云服务&#xff0c;承上…

金蝶云星空其他出库单,审核中/审批流中可以选择序列号设置

文章目录 其他出库单&#xff0c;审核中&#xff0c;审批流中可以选择序列号设置 其他出库单&#xff0c;审核中&#xff0c;审批流中可以选择序列号设置

创建型设计模式 - 抽象工厂模式 - JAVA

创建型设计模式 - 抽象工厂设计模式 一. 简介二. 列子2.1 定义电脑的抽象类和子类2.2 定义抽象工厂类和其实现类2.3 测试 三. 抽象工厂设计模式的好处四. 抽象工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续…

如果xm_bmgys的长度大于3就每行五列,否则每行两列

如果需要根据xm_bmgys的长度动态调整表格的列数&#xff0c;可以使用Freemarker的条件判断语句进行处理。 下面是一个更新后的示例代码&#xff1a; <table><#if xm_bmgys?size > 3> <!-- 如果长度大于3&#xff0c;每行五列 --><#list xm_bmgys a…

【mysql】数据处理格式化、转换、判断

数据处理 判断是否超时&#xff0c;时间是否大于当前时间计算分钟数时间格式化处理如果数值类型进行转换字符类型字符拼接case-when代替if-else判断数据空&#xff08;特殊&#xff1a;含空数据、空字符处理&#xff09; select /*判断是否超时&#xff0c;时间是否大于当前…

2024任务驱动Hadoop应用讲课提纲

文章目录 为何采用任务驱动&#xff1f;任务驱动Hadoop应用课程概述项目一&#xff1a;搭建Hadoop集群任务1&#xff1a;搭建完全分布式Hadoop集群1. 思路解析2. 编程实现3. 知识点讲解4. 总结提高 任务2&#xff1a;搭建高可用Hadoop集群&#xff08;HA模式&#xff09;1. 思路…

c++编程大师挑战赛-静夜思

静夜思 暂无标签 题目统计 全部提交 时间限制&#xff1a;C/C 1000MS&#xff0c;其他语言 2000MS 内存限制&#xff1a;C/C 256MB&#xff0c;其他语言 512MB 难度&#xff1a;简单 出题人&#xff1a;admin 描述 请在屏幕上输出《静夜思》&#xff0c;每句诗后单独占据1行…

AI模型私人订制

使用AI可以把你的脸换成明星的脸&#xff0c;可以用于直播、录播。 AI换脸1 也可以把视频中明星的脸换成你的脸 AI换脸2 之所以能够替换成功&#xff0c;是因为我们有一个AI人物模型&#xff0c;AI驱动这个模型就可以在录制视频的时候替换指定人物的脸。AI模型从哪里来&…