ListUtils工具类便捷操作list集合的方式

ListUtils有两个版本,分别是
org.apache.commons.collections.ListUtils 和
org.apache.commons.collections4.ListUtils。
其中后者为最新版本,对前一版本部分方法有优化,建议使用后一版本。

差集

List<Integer> list1 = Arrays.asList(1, 1, 3, 4);
List<Integer> list2 = Arrays.asList(1, 2, 2, 5);
System.out.println(ListUtils.subtract(list1,list2)); // [1, 3, 4]
System.out.println(ListUtils.subtract(list2,list1)); // [2, 2, 5]

ListUtils 的subtract方法,参数为两个list集合,返回一个新的list集合,集合中的元素为:依次遍历list1,在list2中不存在,则加入返回集合中,如果存在则去除list2中的对应元素,所以存在一种情况,某个元素list1中存在两个,list2中存在一个,则返回集合中有一个此元素。
在 org.apache.commons.collections4.ListUtils 和 org.apache.commons.collections.ListUtils 中实现方式是不一样的。
org.apache.commons.collections4.ListUtils 中:新建一个list集合作为返回值,将list2封装到 HashBag 对象中,底层是hashmap,key是list元素,value是1,然后获得list1的迭代器,遍历list1中的元素,判断如果不存在hashBag中,则添加进返回集合中,如果存在则删除hashBag中元素。
org.apache.commons.collections.ListUtils 中:先将list封装到一个新的list中,获得list2的迭代器,新的list遍历list2的元素,最后返回新的list。
两种方式的结果是一样的。

并集

对两个集合中元素合并,不去重,返回一个新集合。

System.out.println(ListUtils.union(list1,list2)); // [1, 1, 3, 4, 1, 2, 2, 5]
System.out.println(ListUtils.union(list2,list1)); // [1, 2, 2, 5, 1, 1, 3, 4]

交集

返回两个list集合中的相同元素,传入的两个集合不分前后顺序。

System.out.println(ListUtils.intersection(list1,list2)); // [1]
System.out.println(ListUtils.intersection(list2,list1)); // [1]

去除

前一个集合中去除在后一个集合中存在的元素,返回剩下的元素。

System.out.println(ListUtils.removeAll(list1,list2)); // [3, 4]
System.out.println(ListUtils.removeAll(list2,list1)); // [2, 2, 5]

拆分

System.out.println(ListUtils.partition(list1,3)); // [[1, 1, 3], [4]]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值