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