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

CollectionUtils工具类的使用

来自:小小程序员。 本文仅作记录

org.apache.commons.collections包下的CollectionUtils工具类,下面说说它的用法:

一、集合判空

通过CollectionUtils工具类的isEmpty方法可以轻松判断集合是否为空,isNotEmpty方法判断集合不为空。

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
if (CollectionUtils.isEmpty(list)) {System.out.println("集合为空");
}
if (CollectionUtils.isNotEmpty(list)) {System.out.println("集合不为空");
}

二、对两个集合进行交、并、补、差集操作

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(4);//获取并集
Collection<Integer> unionList = CollectionUtils.union(list, list2);
System.out.println(unionList);//获取交集
Collection<Integer> intersectionList = CollectionUtils.intersection(list, list2);
System.out.println(intersectionList);//获取交集的补集
Collection<Integer> disjunctionList = CollectionUtils.disjunction(list, list2);
System.out.println(disjunctionList);//获取差集
Collection<Integer> subtractList = CollectionUtils.subtract(list, list2);
System.out.println(subtractList);运行结果:
[1, 2, 3, 4]
[2]
[1, 3, 4]
[1, 3]

三、从一个对象的集合中,获取某一属性的集合

100个Java工具类之9:apache包下的CollectionUtils

首发2023-07-08 18:00·一名小小程序员

该系列为java工具类系列,主要展示100个常用的java工具类。

本系列工具类的核心目的主要有三点:

1,以便他用:提供可用的Java工具类,方便大家使用,避免重复造轮子

2,个人记录:作为个人记录,同时督促自己学习总结

3,为初学者提供思路,相互交流,共同进步

当然,很多细节部分经不起推敲,如存在部分代码不规范、注释不详细、格式不统一等问题,还望阅读者多多包涵,多提意见。

本文主要讲述:

apache的
org.apache.commons.collections包下的CollectionUtils工具类。

一、集合判空

通过CollectionUtils工具类的isEmpty方法可以轻松判断集合是否为空,isNotEmpty方法判断集合不为空。

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
if (CollectionUtils.isEmpty(list)) {System.out.println("集合为空");
}
if (CollectionUtils.isNotEmpty(list)) {System.out.println("集合不为空");
}

二、对两个集合进行交、并、补、差集操作

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);List<Integer> list2 = new ArrayList<>();
list2.add(2);
list2.add(4);//获取并集
Collection<Integer> unionList = CollectionUtils.union(list, list2);
System.out.println(unionList);//获取交集
Collection<Integer> intersectionList = CollectionUtils.intersection(list, list2);
System.out.println(intersectionList);//获取交集的补集
Collection<Integer> disjunctionList = CollectionUtils.disjunction(list, list2);
System.out.println(disjunctionList);//获取差集
Collection<Integer> subtractList = CollectionUtils.subtract(list, list2);
System.out.println(subtractList);
运行结果:
[1, 2, 3, 4]
[2]
[1, 3, 4]
[1, 3]

三、从一个对象的集合中,获取某一属性的集合

从一个对象的集合中,获取某一属性的集合。如,从人员信息集合中获取人员姓名的集合

List<Map<String, Object>> list = new ArrayList<>();Map<String, Object> map1 = new HashMap<>();map1.put("name", "张三");map1.put("age", 1);Map<String, Object> map2 = new HashMap<>();map2.put("name", "李四");map2.put("age", 2);Map<String, Object> map3 = new HashMap<>();map3.put("name", "王五");map3.put("age", 3);list.add(map1);list.add(map2);list.add(map3);List<String> nameList = (List<String>) CollectionUtils.collect(list, new Transformer() {public Object transform(Object arg0) {Map<String, Object> map = (Map<String, Object>) arg0;return map.get("name");}});System.out.println(nameList);运行结果:
[张三, 李四, 王五]

四、从一个对象集合中过滤出只符合要求的对象

List<Map<String, Object>> list = new ArrayList<>();List<Map<String, Object>> tarList = new ArrayList<>();Map<String, Object> map1 = new HashMap<>();map1.put("name", "张三");map1.put("age", 1);Map<String, Object> map2 = new HashMap<>();map2.put("name", "张三");map2.put("age", 2);Map<String, Object> map3 = new HashMap<>();map3.put("name", "王五");map3.put("age", 3);list.add(map1);list.add(map2);list.add(map3);CollectionUtils.filter(list, new Predicate(){public boolean evaluate(Object arg0) {Map<String, Object> map = (Map<String, Object>)arg0;return "张三".equals((String)map.get("name"))&& 2 == Integer.parseInt(String.valueOf(map.get("age")));}});System.out.println(list);执行结果:
[{name=张三, age=2}]

http://www.lryc.cn/news/101948.html

相关文章:

  • 基于Nonconvex规划的配电网重构研究(Matlab代码实现)
  • yolo系列笔记(v4-v5)
  • 小白如何高效刷题Leetcode?
  • 使用IDEA打jar包的详细图文教程
  • 《MySQL 实战 45 讲》课程学习笔记(二)
  • 微软亚研院提出模型基础架构RetNet或将成为Transformer有力继承者
  • 探索单例模式:设计模式中的瑰宝
  • Bobo String Construction 2023牛客暑期多校训练营4-A
  • 【React学习】React父子组件通讯
  • NASM汇编
  • 第三章 HL7 架构和可用工具 - 使用 HL7 架构结构页面
  • spring注解驱动开发(一)
  • Vue3搭建启动
  • 阻塞队列(模拟实现)
  • VScode中python的相对路径与绝对路径 FileNotFoundError: [Errno 2] No such file or directory
  • Unity XML2——C#读写XML
  • 带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)
  • 数据仓库基础知识
  • M 芯片的 macos 系统安装虚拟机 centos7 网络配置
  • AcWing 3708. 求矩阵的鞍点
  • web前端开发工程师的具体职责范本(合集)
  • 从源程序到可执行文件的四个过程
  • C++部署学习
  • linux下lazarus开发ide里 BGRAControls控件库comboBox示例
  • Redis学习路线(9)—— Redis的场景使用
  • 糟了,数据库主从延迟了!
  • VUE,子组件给父组件传递参数,props 自定义属性,ref
  • 【Oracle系列】- Oracle数据迁移
  • Linux环境安装MySQL(详细教程)
  • 23. Mysql中的排序规则