1. 程式人生 > >Apache的commons之函數語言程式設計集合及佇列(三)

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);
    }