挑战全网最全CollectionUtils工具类解析Apache Commons CollectionUtils (一)

2023-05-16

依赖

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

包下的方法:
在这里插入图片描述
关于集合操作的方法:

public static void main(String[] args) {
        String[] arrayA = new String[] { "1", "2", "3", "4"};
        String[] arrayB = new String[] { "3", "4", "5", "6" };
        List<String> listA = Arrays.asList(arrayA);
        List<String> listB = Arrays.asList(arrayB);

        // 两个集合的并集      union = [1, 2, 3, 4, 5, 6]
        System.out.println("union = " + CollectionUtils.union(listA, listB));
        // 忽略集合中的null值  addIgnoreNull = false
        System.out.println("addIgnoreNull = " + CollectionUtils.addIgnoreNull(listA, null));
        // 两个集合的交集      intersection = [3, 4]
        System.out.println("intersection = " + CollectionUtils.intersection(listA,listB));
        //  两个集合交集和补集   也有叫析取   disjunction = [1, 2, 5, 6]
        System.out.println("disjunction = " + CollectionUtils.disjunction(listA, listB));
        // 集合A是被过滤目标  去除A中包含B的  subtract = [1, 2]
        System.out.println("subtract = " + CollectionUtils.subtract(listA, listB));
        // 在两个集合中任意匹配              containsAny = true
        System.out.println("containsAny = " + CollectionUtils.containsAny(listA, listB));
        // 返回每个元素出现的次数             getCardinalityMap = {1=1, 2=1, 3=1, 4=1}
        System.out.println("getCardinalityMap = " + CollectionUtils.getCardinalityMap(listA));
        //  判断这两个结合是否存在交集         isSubCollection = false
        System.out.println("isSubCollection = " + CollectionUtils.isSubCollection(listA, listB));
        //  判断集合A是否是B的子集            isProperSubCollection = false
        System.out.println("isProperSubCollection = " + CollectionUtils.isProperSubCollection(listA, listB));
        // 判断两个集合是否相等               isEqualCollection = false
        System.out.println("isEqualCollection = " + CollectionUtils.isEqualCollection(listA, listB));
        // 判断1在集合中出现的次数             cardinality = 0
        System.out.println("cardinality = " + CollectionUtils.cardinality("1", listB));
        // 判断集合是否为空 和empty小伙雷同      sizeIsEmpty = false
        System.out.println("sizeIsEmpty = " + CollectionUtils.sizeIsEmpty(listB));
        //  isEmpty = false
        System.out.println("isEmpty = " + CollectionUtils.isEmpty(listB));
        // 判断集合是否是一个固定长度的集合,此方法使用BoundedCollection接口确定最大大小。如果集合未实现此接口,则返回-1
        // isFull = false
        System.out.println("isFull = " + CollectionUtils.isFull(listB));
        // 判断集合的最大大小
        System.out.println("maxSize = " + CollectionUtils.maxSize(listB));
        //  返回同步的集合                     synchronizedCollection = [3, 4, 5, 6]
        System.out.println("synchronizedCollection = " + CollectionUtils.synchronizedCollection(listB));
        // 返回不可修改的集合                   unmodifiableCollection = [3, 4, 5, 6]
        System.out.println("unmodifiableCollection = " + CollectionUtils.unmodifiableCollection(listB));
        System.out.println("isFull = " + CollectionUtils.isFull(listB));
        // 集合A包含集合B中至少出现一次的collection元素。 retainAll = [3, 4]
        System.out.println("retainAll = " + CollectionUtils.retainAll(listA, listB));
        // removeAll = [1, 2]
        System.out.println("removeAll = " + CollectionUtils.removeAll(listA, listB));
        // 集合转换 typedCollection = [1, 2, 3, 4]
        System.out.println("typedCollection = " + CollectionUtils.typedCollection(listA, String.class));
    }

关于对象的操作:

@Data
@Accessors(chain = true)
public class Emp {
    private Long departId;

    private String departName;

    private String email;

    private Integer departNumber;
}

方法:

        CollectionUtils.forAllDo(Collection collection, Closure closure);
        CollectionUtils.forAllDo(Collection collection, Predicate predicate);
        CollectionUtils.transform(Collection inputCollection, Transformer transformer);
        CollectionUtils.countMatches(Collection inputCollection, Predicate predicate);
Emp empIns = new Emp().setDepartId(1L).setDepartName("molizhuangquanquan").setEmail("94655718@qq.com").setDepartNumber(23);
        Emp u1 = new Emp().setDepartId(1l).setDepartName("chenpi1").setEmail("94655718@qq.com").setDepartNumber(10);
        List<Emp> userList = Arrays.asList(empIns, u1);

        // 对集合中的对象进行操作
        CollectionUtils.forAllDo(userList, new Closure() {
            @Override
            public void execute(Object input) {
                Emp activityWinRecord = (Emp) input;
                Long id = activityWinRecord.getDepartId();
                if (Objects.equals(1L, id)) {
                    activityWinRecord.setDepartNumber(Math.addExact(activityWinRecord.getDepartNumber(),1));
                }
            }
        });
        System.out.println("userList1 = " + userList);
		// userList1 = [Emp(departId=1, departName=molizhuangquanquan, email=94655718@qq.com, departNumber=24), Emp(departId=1, departName=chenpi1, email=94655718@qq.com, departNumber=11)]

        // 对集合中的对象进行操作
        CollectionUtils.filter(userList, new Predicate() {
            @Override
            public boolean evaluate(Object object) {
                Emp emp = (Emp) object;
                return StringUtils.isNotBlank(emp.getDepartName());
            }
        });
        System.out.println("userList2 = " + userList);
		// userList2 = [Emp(departId=1, departName=molizhuangquanquan, email=94655718@qq.com, departNumber=24), Emp(departId=1, departName=chenpi1, email=94655718@qq.com, departNumber=11)]
		
        // 对集合中的对象的某一列属性进行收集
        List<String> collect = (List<String>) CollectionUtils.collect(userList, new Transformer() {
            @Override
            public Object transform(Object input) {
                Emp emp = (Emp) input;
                return emp.getDepartName();
            }
        });
        System.out.println("collect4 = " + collect);
		// collect4 = [molizhuangquanquan, chenpi1]
		
        // 对集合中的对象的某一列属性进行收集
        List<Emp> noli = (List<Emp>) CollectionUtils.select(userList, new Predicate() {
            @Override
            public boolean evaluate(Object object) {
                if (object instanceof Emp) {
                    Emp emp = (Emp) object;
                    if (Objects.equals(emp.getDepartId(), 1L) && Objects.equals(emp.getDepartName(), "molizhuangquanquan")) {
                        return true;
                    }
                }
                return false;
            }
        });
        System.out.println("collect5 = " + noli);
		// collect5 = [Emp(departId=1, departName=molizhuangquanquan, email=94655718@qq.com, departNumber=24)]
		
        // 对集合中的对象的某一列属性进行收集
        List<Emp> nolkihau = (List<Emp>) CollectionUtils.select(userList, new Predicate() {
            @Override
            public boolean evaluate(Object object) {
                if (Emp.class.isAssignableFrom(object.getClass())) {
                    Emp emp = (Emp) object;
                    if (Objects.equals(emp.getDepartId(), 1L) && Objects.equals(emp.getDepartName(), "molizhuangquanquan")) {
                        return true;
                    }
                }
                return false;
            }
        });
        System.out.println("nolkihau6 = " + nolkihau);
		// nolkihau6 = [Emp(departId=1, departName=molizhuangquanquan, email=94655718@qq.com, departNumber=24)]
		
        // 对集合中的对象caozuo
        CollectionUtils.countMatches(userList, new Predicate() {
            @Override
            public boolean evaluate(Object object) {
                Emp emp = (Emp) object;
                if(Objects.equals(emp.getDepartId(),1L)){
                    return true;
                }
                return false;
            }
        });
        System.out.println("userList7= " + userList);
        // userList7= [Emp(departId=1, departName=molizhuangquanquan, email=94655718@qq.com, departNumber=24), Emp(departId=1, departName=chenpi1, email=94655718@qq.com, departNumber=11)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

挑战全网最全CollectionUtils工具类解析Apache Commons CollectionUtils (一) 的相关文章

随机推荐