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

【工具类】常用的工具类——CollectionUtil

目录

    • cn.hutool.core.collection.CollectionUtil
      • 集合创建
      • 集合清空
      • 集合判空
      • 集合去重
      • 集合过滤
      • 集合转换
      • 集合合并
      • 集合交集
      • 集合差集
      • 集合是否包含元素
      • 集合是否包含指定元素(自定义条件)
      • 集合分页
      • 集合分组
      • 集合转字符串
      • 元素添加
      • 元素删除
      • 根据属性转Map
      • 获取元素
      • 获取最大/最小元素
      • 集合排序

cn.hutool.core.collection.CollectionUtil

集合创建

List<User> userList = CollectionUtil.list(true);
//true:ArrayList,false:LinkedListList<String> list1 = Arrays.asList("1", "2", "3", "4", "5");//不可变集合
List<String> list2 = CollectionUtil.toList("1", "2", "3", "4", "5");//可变集合
System.out.println(list2);//[1, 2, 3, 4,5]

集合清空

List<String> list = CollectionUtil.toList("1", "2", "3", "4", "5");
CollectionUtil.clear(list);
System.out.println(list);//[]

集合判空

List<String> list1 = null;
List<String> list2 = new ArrayList<>();
boolean isEmpty = CollectionUtils.isEmpty(list1); // true
boolean isEmpty = CollectionUtils.isEmpty(list2); // trueList<String> list = Arrays.asList("a", "b", "c");
boolean isNotEmpty = CollectionUtils.isNotEmpty(list); // trueList<String> list1 = null;
List<String> list2 = Arrays.asList("1","2","3");
List<String> result1 = CollectionUtil.emptyIfNull(list1);//[]
List<String> result2 = CollectionUtil.emptyIfNull(list2);//["1","2","3"]Set<String> set1 = null;
Set<String> set2 = new HashSet<>(Arrays.asList("1","2","3"));
Set<String> result3 = CollectionUtil.emptyIfNull(set1);//[]
Set<String> result4 = CollectionUtil.emptyIfNull(set2);//["1","2","3"]//空集合给默认值
List<String> list = new ArrayList<>();
List<String> result = CollectionUtil.defaultIfEmpty(list, Arrays.asList("1", "2", "3"));//["1", "2", "3"]//判断是否有空元素
CollectionUtil.hasNull(list);

集合去重

List<String> list = Arrays.asList("a", "b", "a", "c");
List<String> distinctList = CollectionUtil.distinct(list); // ["a", "b", "c"]

集合过滤

//List<String> list =Arrays.asList("a", "b", "c");//Arrays.asList()返回的集合是不可变长度的,在这里这么用会报错:UnsupportedOperationException
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> filteredList = CollectionUtil.filter(list, e -> e.equals("a")); // ["a"]

集合转换

List<String> list = Arrays.asList("1", "2", "3");
List<Integer> mappedList = CollectionUtil.map(list, Integer::valueOf,true); // [1, 2, 3]

集合合并

List<String> list1 = Arrays.asList("a", "b");
List<String> list2 = Arrays.asList("b", "c");Set<String> unionDistinctList = CollectionUtil.unionDistinct(list1, list2); // ["a", "b", "c"]List<String> unionAllList = (List<String>)CollectionUtil.unionAll(list1, list2); // ["a", "b", "c"]

集合交集

List<String> list1 = Arrays.asList("a", "b");
List<String> list2 = Arrays.asList("b", "c");
List<String> intersectionList = (List<String>)CollectionUtil.intersection(list1, list2); // ["b"]

集合差集

List<String> list1 = Arrays.asList("a", "b");
List<String> list2 = Arrays.asList("b", "c");
List<String> disjunctionList = (List<String>)CollectionUtil.disjunction(list1, list2); // ["a", "c"]

集合是否包含元素

List<String> list = Arrays.asList("a", "b", "c");
boolean contains = CollectionUtil.contains(list, "a"); // trueList<String> list2 = Arrays.asList("a", "b", "c");
List<String> subList = Arrays.asList("a", "b");
boolean containsAll = CollectionUtil.containsAll(list2, subList); // true

集合是否包含指定元素(自定义条件)

List<String> list = Arrays.asList("a", "b", "c");
boolean contains = CollectionUtil.contains(list, e -> e.equals("a")); // true

集合分页

List<String> list = Arrays.asList("a", "b", "c", "d", "e");
List<String> pageList = CollectionUtil.page(1, 2,list); // ["c", "d"],页码索引从0开始

集合分组

List<User> list = Arrays.asList(new User("张三", 18, 1),new User("李四", 18, 2),new User("王五", 18, 3),new User("赵六", 18, 4),new User("老七", 18, 1),new User("勾八", 18, 1),new User("孙九", 18, 3),new User("郑十", 18, 2),new User("root", 18, 2));
List<List<User>> groupedList = Co
System.out.println(groupedList);
//[[User(name=张三, age=18, grade=1), User(name=老七, age=18, grade=1), User(name=勾八, age=18, grade=1)], 
//[User(name=李四, age=18, grade=2), User(name=郑十, age=18, grade=2), User(name=root, age=18, grade=2)], 
//[User(name=王五, age=18, grade=3), User(name=孙九, age=18, grade=3)], 
//[User(name=赵六, age=18, grade=4)]]

集合转字符串

List<String> list = Arrays.asList("a", "b", "c");
String joinedString = CollectionUtil.join(list, ","); // "a,b,c"

元素添加

List<String> list = new ArrayList<>(Arrays.asList("1", "2"
CollectionUtil.addAll(list,"4");
CollectionUtil.addAll(list,new String[]{"5","6"});
CollectionUtil.addAll(list,Arrays.asList("7","8"));
CollectionUtil.addAll(list,new HashSet<>(Arrays.asList("9"
System.out.println(list);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3"));
CollectionUtil.addAllIfNotContains(list, Arrays.asList("1", "2", "4"));
System.out.println(list);//[1, 2, 3, 4]List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3"));
CollectionUtil.addIfAbsent(list,"2");//已存在不添加
CollectionUtil.addIfAbsent(list,"4");
System.out.println(list);//[1, 2, 3, 4]

元素删除

List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3","","4",null,"5"));
CollectionUtil.removeEmpty(list);
//CollectionUtil.removeBlank(list);
System.out.println(list);//[1, 2, 3, 4,5]List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3","4","3","5","3","2"));
CollectionUtil.removeAny(list, "3","2");
System.out.println(list);//[1, 4,5]List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3","","4",null,"5"));
CollectionUtil.removeNull(list);
System.out.println(list);//[1, 2, 3, 4,5]//自定义条件
List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3","","4",null,"5"));
CollectionUtil.removeWithAddIf(list, item -> item == null || item.isEmpty());
System.out.println(list);//[1, 2, 3, 4,5]

根据属性转Map

List<User> list = Arrays.asList(new User(1,"张三", 18, 1),new User(2,"李四", 18, 2),new User(3,"王五", 18, 3),new User(4,"张三", 18, 4),new User(5,"李四", 18, 1));
Map<String, User> result = CollectionUtil.fieldValueMap(list, "id");Map<String, User> result2 = CollectionUtil.fieldValueAsMap(list, "id", "name");

获取元素

List<User> list = Arrays.asList(new User(1,"张三", 18, 1),new User(2,"李四", 18, 2),new User(3,"王五", 18, 3),new User(4,"张三", 18, 4),new User(5,"李四", 18, 1));
User result = CollectionUtil.get(list,6);//自带判空效果
User result = CollectionUtil.getFirst(list);
User result = CollectionUtil.getLast(list);
List<User> result = CollectionUtil.getAny(list, 0,  2);
List<Object> result = CollectionUtil.getFieldValues(list, "name");//[张三, 李四, 王五, 张三, 李四]  User类要先实现Iterable<E>接口//截取集合
List<User> result = CollectionUtil.sub(list, 0, 3);

获取最大/最小元素

List<User> list = Arrays.asList(new User(1,"张三", 19, 1),new User(2,"李四", 18, 2),new User(3,"王五", 16, 3),new User(4,"张三", 24, 4),new User(5,"李四", 17, 1));
//需要User先实现Comparable<e>接口
User result = CollectionUtil.max(list);//张三
User result = CollectionUtil.min(list);//王五

集合排序

List<User> list = Arrays.asList(new User(1,"张三", 19, 1),new User(2,"李四", 18, 2),new User(3,"王五", 16, 3),new User(4,"张三", 24, 4),new User(5,"李四", 17, 1));
//不需要User先实现Comparable<e>接口,默认从小到大排序
List<User> result = CollectionUtil.sort(list, Comparator.comparing(User::getAge));

相关文章:

  • 红帽企业 Linux 10:探索全新生成式 AI 助手!
  • JDK21全景图:关键特性与升级价值
  • Python爬虫(34)Python爬虫高阶:动态页面处理与Playwright增强控制深度解析
  • MCP如何助力智能交通系统?从数据融合到精准决策
  • 图纸加密软件的核心优势解析
  • C++11-(3)
  • 文章记单词 | 第104篇(六级)
  • PostgreSQL 用户权限与安全管理
  • 610Hz!无惧环境光新薄膜!ROG全新电竞显示器亮相2025台北电脑展
  • 阿里云服务器 篇十四:图片库网站
  • 应届本科生简历制作指南
  • 嵌入式学习笔记 - Void类型的指针
  • shell脚本总结5
  • QGIS DB Manager 导入 Shp 到 PostGIS 空间数据库
  • JDK7Hashmap的头插法造成的环问题
  • 【Java】CompletableFuture.orTimeout在JDK21以下版本有内存泄漏及解决方案
  • 2. PyQGIS Windows下开发环境搭建
  • 【JAVA基础】什么情况下可以直接使用类名.方法名调用方法?
  • 降低诊断消息转发延迟与缓冲区内存占用优化方案
  • 高等数学-微分
  • 做网站的是什么/新闻报道最新消息今天
  • seo 网站文案模板/吸引人的微信软文
  • 运城建设局网站/做推广的都是怎么推
  • 怎么建电子商务网站/百度指数
  • 建立一个购物网站/seo网站推广收费
  • 杭州做网站/苏州优化排名seo