集合工具-CollUtil
# 📚简介
CollUtil是Hutool中用于操作集合的强大工具类,提供了丰富的集合操作方法,涵盖了判断、操作、转换等多个方面,使得对集合的操作更加简便和高效。
# 集合判空
# 判断集合是否为空
CollUtil 提供了多种判空方法,可以针对Collection、Iterable、Iterator、Enumeration等类型进行空值判断。
final List<String> list = new ArrayList<>();
// true
CollUtil.isEmpty(list);
对于Map类型,也有相应的判空方法:
final Map<String, String> map = new HashMap<>();
// true
CollUtil.isEmpty(map);
# 判断集合是否非空
同样,CollUtil 提供了判断集合是否非空的方法。
final List<String> list = Arrays.asList("a", "b", "c");
// true
CollUtil.isNotEmpty(list);
# 集合去重
# 根据元素去重
CollUtil.distinct方法可以去除集合中的重复元素,保留顺序。
final List<String> list = Arrays.asList("a", "b", "c", "a", "b");
// ["a", "b", "c"]
final List<String> distinctList = CollUtil.distinct(list);
# 根据生成的唯一键去重
可以根据元素的某个属性进行去重,保留第一个或最后一个元素。
final List<String> list = Arrays.asList("a", "A", "b", "B");
// 保留第一个出现的元素
final List<String> distinctList = CollUtil.distinct(list, String::toLowerCase, false);
# 集合的并集、交集、差集
# 并集
计算多个集合的并集,保留所有元素。
final List<String> list1 = Arrays.asList("a", "b", "c");
final List<String> list2 = Arrays.asList("b", "c", "d");
// ["a", "b", "c", "b", "c", "d"]
final List<String> union = CollUtil.unionAll(list1, list2);
# 交集
计算多个集合的交集,仅保留所有集合共有的元素。
final List<String> list1 = Arrays.asList("a", "b", "c");
final List<String> list2 = Arrays.asList("b", "c", "d");
// ["b", "c"]
final List<String> intersection = CollUtil.intersection(list1, list2);
# 差集
计算集合的差集,仅保留在第一个集合中但不在第二个集合中的元素。
final List<String> list1 = Arrays.asList("a", "b", "c");
final List<String> list2 = Arrays.asList("b", "c", "d");
// ["a"]
final List<String> subtract = CollUtil.subtract(list1, list2);
# 集合转换为字符串
# 以分隔符连接集合
CollUtil.join可以将集合元素转换为字符串,并以指定分隔符连接。
final List<String> list = Arrays.asList("a", "b", "c");
// "a,b,c"
final String result = CollUtil.join(list, ",");
# 集合的编辑和过滤
# 根据条件编辑集合
通过CollUtil.edit方法,可以根据给定的函数对集合元素进行编辑,生成一个新的集合。
final List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// [1, 4, 9, 16, 25]
final List<Integer> squareList = CollUtil.edit(list, x -> x * x);
# 过滤集合元素
使用CollUtil.filter方法可以对集合进行过滤,保留符合条件的元素。
final List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
// [2, 4]
final List<Integer> evenList = CollUtil.filter(list, x -> x % 2 == 0);
# 获取集合的第一个或最后一个元素
# 获取第一个元素
final List<String> list = Arrays.asList("a", "b", "c");
// "a"
final String first = CollUtil.getFirst(list);
# 获取最后一个元素
final List<String> list = Arrays.asList("a", "b", "c");
// "c"
final String last = CollUtil.getLast(list);
# 集合排序
# 根据属性排序
CollUtil提供了按属性排序的方法。
class User {
private String name;
private int age;
// getter and setter
}
final List<User> users = Arrays.asList(new User("Alice", 25), new User("Bob", 20));
// 根据age排序
final List<User> sortedUsers = CollUtil.sortByProperty(users, "age");
# 根据拼音排序
还可以根据汉字的拼音顺序对集合进行排序。
final List<String> list = Arrays.asList("张三", "李四", "王五");
// ["李四", "王五", "张三"]
final List<String> sortedList = CollUtil.sortByPinyin(list);