Apache的commons之函數語言程式設計集合及佇列(三)
阿新 • • 發佈:2018-12-02
集合並集
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); }