Apache的commons之函数式编程集合及队列(三)

 

集合并集

CollectionUtils.union(集合1, 集合2)

集合交集

CollectionUtils.intersection(集合1, 集合2)
或者
CollectionUtils.retainAll(集合1, 集合2)

集合差集

CollectionUtils.subtract(集合1, 集合2)

 

使用如下

 

    public static void main (String[] args) {
        List<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        List<Integer> list1=new ArrayList<>();
        list1.add(3);
        list1.add(4);
        list1.add(5);
        list1.add(6);
        //并集
        System.out.println("####并集");
        Collection<Integer> union = CollectionUtils.union(list, list1);
        union.stream().forEach(System.out::println);

        System.out.println("####交集");
       // Collection<Integer> intersection = CollectionUtils.intersection(list, list1);
        Collection<Integer> intersection = CollectionUtils.retainAll(list, list1);
        intersection.stream().forEach(System.out::println);
        System.out.println("######差集");
        Collection<Integer> disjunction = CollectionUtils.subtract(list, list1);
        disjunction.stream().forEach(System.out::println);
        System.out.println("###除去交集所剩的全部元素");
        Collection<Integer> disjunction1 = CollectionUtils.disjunction(list, list1);
        disjunction1.stream().forEach(System.out::println);
    }

 

队列CircularFifoQueue

 

 public static void main (String[] args) {
       // loopQueue();
        //readOnly();
        predicate();
    }

    //循环队列
    public static void loopQueue(){
        //size 队列长度 队列满了时候再添加元素,会自动弹出先进来的元素,再在后面添加
        //即 你size长度为2  但是add添加 三个值{a,b,c} 这时c会覆盖a
        CircularFifoQueue<String> circularFifoQueue=new CircularFifoQueue(2);
        circularFifoQueue.add("a");
        circularFifoQueue.add("b");
        circularFifoQueue.add("c");
        circularFifoQueue.stream().forEach(System.out::println);

    }


    //只读队列
    public static void readOnly(){
        CircularFifoQueue<String> circularFifoQueue=new CircularFifoQueue(2);
        circularFifoQueue.add("a");
        circularFifoQueue.add("b");
        circularFifoQueue.add("c");

        java.util.Queue<String> strings = UnmodifiableQueue.unmodifiableQueue(circularFifoQueue);
        //strings.add("c"); 错误java.lang.UnsupportedOperationException

    }


    //断言队列
    public static void predicate(){
        CircularFifoQueue<String> circularFifoQueue=new CircularFifoQueue(4);
        circularFifoQueue.add("a");
        circularFifoQueue.add("b");
        circularFifoQueue.add("c");


        PredicatedQueue<String> strings = PredicatedQueue.predicatedQueue(circularFifoQueue, NotNullPredicate.INSTANCE);
       // strings.add(null);  错误 Cannot add Object 'null'

        strings.add("d");
        strings.stream().forEach(System.out::println);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值