对于集合的常见操作有:
# | 操作 |
---|---|
1 | 判空 |
2 | 批量添加元素 |
3 | 选中/选出某些元素 |
4 | 剃除某些元素 |
5 | 形变 |
6 | 比较 |
判空
CollectionUtils.isEmpty 方法用于判断集合是否为空。null
和 size == 0
都是空。
CollectionUtils.isNotEmpty 方法的判断逻辑与 .isEmpty 方法相反。
批量添加元素
CollectionUtils.addAll 方法将 参数2
中的元素,添加至 参数1
中。如果 参数1
并未发生变化,则返回 false 。
选中/选出某些元素
CollectionUtils 工具类的 .select 方法用于循环遍历,查找,选出元素,所有符合条件的元素都将返回。<small>>原集合内容不变。</small>
// 结果:{2, 4, 6}。源集合不变。
CollectionUtils.select(list, item -> item % 2 == 0);
IterableUtils 工具类的 find 可以可以实现 循环,查找、选中的功能,不过它只会返回第一个满足条件的元素。
剃除某些元素
CollectionUtils.filter 方法的功能是循环遍历集合,查找符合条件的元素,将不符合条件的元素移除。
这个命名和功能与 guava 的 filter 方法区别很大。guava 中的 .filter 是纯查询功能,而 commons-collection4 兼具查询和移除功能,移除的还是不满足条件元素。
如果原集合中至少有 1 个元素被移除,则 filter 方法返回 true 。
伪代码如下:
// 结果:源集合将变为 {2, 4, 6}
CollectionUtils.filter({1,2,3,4,5,6,7}, item -> item % 2 == 0);
形变
形变<small>(transform)</small>是指以一个集合作为『素材』生成另一个集合。
例如,『手头』有一个 Student 的集合,现在需要获得一个包含所有这些 Student 的 Name 的集合。
当然,所生成/返回的集合中的元素,一定是与源集合有逻辑上的关系的。
CollectionUtils 中有 2 个静态方法可以进行循环形变,它们的区别在于是源集合发生变化,还是生成一个新集合:
-
transform:发生形变的是源集合。
-
collect:源集合内容不变,生成一个新集合 |
伪代码如下:
// 结果:{ 1, 2, 3, 4 } 不变,生成新集合
CollectionUtils.collect({1,2,3,4}, item -> ++item);
// 结果:{ 2, 3, 4, 5 } 源集合会发生变化
CollectionUtils.transform({1,2,3,4}, item -> ++item);
比较
isEqualCollection:判断两个集合是否相等。
网友评论