CollectionUtils方法测试

List<String> list1 = Arrays.asList("1","2","3","1","1");
List<String> list2 = Arrays.asList("1","3");

注意:Arrays.asList 生成的list是Arrays类中的一个内部类,不能进行add和remove,否则报错

union,intersection,disjunction,subtract

System.out.println(CollectionUtils.union(list1,list2)); // [1, 1, 1, 2, 3]  并集
System.out.println(CollectionUtils.intersection(list1,list2)); // [1,3]  交集
System.out.println(CollectionUtils.disjunction(list1,list2)); // [1, 1, 2] 交集的补集
System.out.println(CollectionUtils.subtract(list1,list2)); // [2, 1, 1] 集合相减
retainAll
// list1与list2的交集元素
System.out.println(CollectionUtils.retainAll(list1,list2)); // [1, 3, 1, 1]

containsAny: list1 是否包含 list2 中任意元素

System.out.println(CollectionUtils.containsAny(list1,list2)); // true
System.out.println(CollectionUtils.containsAny(list1,Arrays.asList("4","5"))); // false
System.out.println(CollectionUtils.containsAny(list1,Arrays.asList("1","8"))); // true

getCardinalityMap: 统计集合中各元素出现的次数,并Map<Object, Integer>输出

// 统计集合中各元素出现的次数,并Map<Object, Integer>输出
System.out.println(CollectionUtils.getCardinalityMap(list1)); // {1=3, 2=1, 3=1}

isSubCollection,isProperSubCollection,isEqualCollection

// list2是否list1集合子集,list2集合大小<=list1集合大小
System.out.println(CollectionUtils.isSubCollection(list2,list1));// true
System.out.println(CollectionUtils.isSubCollection(Arrays.asList("1","3","4"),list1));// false
// list2是否list1集合子集,list2集合大小<list1集合大小
System.out.println(CollectionUtils.isProperSubCollection(list2,list1));// true
System.out.println(CollectionUtils.isProperSubCollection(list1,list1));// false
// 两个集合是否相同
System.out.println(CollectionUtils.isEqualCollection(list1,list2));// false

cardinality: 某元素在集合中出现的次数

// 某元素在集合中出现的次数
System.out.println(CollectionUtils.cardinality("1",list1));// 3

find:返回集合中满足函数式的唯一元素,只返回最先处理符合条件的唯一元素

// 返回集合中满足函数式的唯一元素,只返回最先处理符合条件的唯一元素
System.out.println(CollectionUtils.find(list1,m->"3".equals(m.toString()))); // 3
System.out.println(CollectionUtils.find(list1, new Predicate(){
      @Override
      public boolean evaluate(Object object) {
          return "3".equals(object.toString());
      }
})); // 3

filter: 过滤集合中满足函数式的所有元素

// 过滤集合中满足函数式的所有元素
LinkedList linkedList = new LinkedList(list1);
CollectionUtils.filter(linkedList,m-> Integer.parseInt(m.toString()) > 1); // (Collection collection, Predicate predicate)
System.out.println(linkedList); // [2, 3]

countMatches:返回集合中满足函数式的数量

// 返回集合中满足函数式的数量
System.out.println(CollectionUtils.countMatches(linkedList,m-> Integer.parseInt(m.toString()) > 1)); // 2

exists: 集合中是否存在这个元素

// 集合中是否存在这个元素
System.out.println(CollectionUtils.exists(list1,m->"2".equals(m)));// true

select:将满足表达式的元素存入新集合中并返回新集合元素对象

// 将满足表达式的元素存入新集合中并返回新集合元素对象
Collection collection = CollectionUtils.select(list1, m -> Integer.parseInt(m.toString()) > 1);
List<String> aList = new ArrayList<>();
CollectionUtils.select(list1, m -> Integer.parseInt(m.toString()) > 1,aList);
System.out.println(collection); // [2, 3]
System.out.println(aList); // [2, 3]

selectRejected:将不满足表达式的元素存入新集合中并返回新集合元素对象

// 将不满足表达式的元素存入新集合中并返回新集合元素对象
Collection collection1 = CollectionUtils.selectRejected(list1, m -> Integer.parseInt(m.toString()) > 1);
List<String> aList1 = new ArrayList<>();
CollectionUtils.selectRejected(list1, m -> Integer.parseInt(m.toString()) > 1,aList1);
System.out.println(collection1); // [1, 1, 1]
System.out.println(aList1); // [1, 1, 1]

addIgnoreNull : 除非元素为null,否则向集合添加元素

// 除非元素为null,否则向集合添加元素
List<String> listAdd1 = new ArrayList<>();
CollectionUtils.addIgnoreNull(listAdd1,"9");
System.out.println(listAdd1); // [9]
CollectionUtils.addIgnoreNull(listAdd1,null);
System.out.println(listAdd1); // [9]

addAll: 将一个数组或集合中的元素全部添加到另一个集合中

// 将一个数组或集合中的元素全部添加到另一个集合中
CollectionUtils.addAll(list1,new String[]{"5"});
System.out.println(list1); // [1, 2, 3, 1, 1, 5]

get: 根据索引获得数据

// 支持格式:Map,List,Object[],Iterator,Collection,Enumeration
System.out.println(CollectionUtils.get(list1,2));

forAllDo: 遍历

Closure:闭包,参考工具类ClosureUtils

CollectionUtils.forAllDo(list1, new Closure() {
            @Override
            public void execute(Object input) {
                Student stu = (Student)input;
                stu.setName(stu.getName()+" hahah");
            }
});

collect:

Collection collect = CollectionUtils.collect(list1, new Transformer() {
            @Override
            public Object transform(Object input) {
                Student stu = (Student) input;
                return stu.getName();
            }
});

transform:转换,改变的是list1里面的值

CollectionUtils.transform(list1, new Transformer() {
            @Override
            public Object transform(Object input) {
                Student stu = (Student) input;
                if ("lili".equals(stu.getName())){
                    stu.setName("zhangsan");
                }
                return stu;
            }
});

参考文档:

PredicateUtils工具类: https://blog.csdn.net/OutRoading/article/details/119677745

TransformerUtils工具类: https://blog.csdn.net/OutRoading/article/details/119678451

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值