=========差集=========
1
五、Queue队列
package Collections;
import java.util.Queue;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.functors.NotNullPredicate;
import org.apache.commons.collections4.queue.CircularFifoQueue;
import org.apache.commons.collections4.queue.PredicatedQueue;
import org.apache.commons.collections4.queue.UnmodifiableQueue;
/**
* Queue队列
* 1.循环队列
* 2.只读队列:不可改变队列
*/
@SuppressWarnings("all")
public class Demo05 {
public static void main(String[] args) {
circullar();
readOnly();
//predicate();
}
/**
* 循环队列
*/
public static void circullar()
{
//长度是2,因此只能保留两个,循环着走。
CircularFifoQueue
que = new CircularFifoQueue<>(2); que.add("a"); que.add("b"); que.add("c"); que.add("d"); //查看 for(int i=0;i
que = new CircularFifoQueue<>(2); que.add("a"); que.add("b"); que.add("c"); Queue
readOnlyOne = UnmodifiableQueue.unmodifiableQueue(que); //readOnlyOne.add("d");//java.lang.UnsupportedOperationException } /** * 断言队列 */ public static void predicate() { //循环队列 CircularFifoQueue
que = new CircularFifoQueue<>(2); que.add("a"); que.add("b"); que.add("c"); Predicate notNull = NotNullPredicate.INSTANCE; //包装成对应的队列 Queue
que2 = PredicatedQueue.predicatedQueue(que,notNull); //que2.add(null);//java.lang.IllegalArgumentException } }
运行结果:
c
d
六、迭代器的扩展
package Collections;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.MapIterator;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.iterators.ArrayListIterator;
import org.apache.commons.collections4.iterators.FilterIterator;
import org.apache.commons.collections4.iterators.LoopingIterator;
import org.apache.commons.collections4.iterators.UniqueFilterIterator;
import org.apache.commons.collections4.map.HashedMap;
/**
* 迭代器的扩展
* 1、MapIterator 以后不再使用map.keySet.iterator访问
* IterableMap
* HashedMap
* 2、去重迭代器
* UniqueFilterIterator
* 3、自定义的过滤器
* FilterIterator 自定义的过滤器+Predicate
* 4、循环迭代器
* LoopingIterator
* 5、数组迭代器
* ArrayListIterator
*
* @author liguodong
*/
@SuppressWarnings("all")
public class Demo06 {
public static void main(String[] args) {
mapIt();
uniqueIt();
filterIt();
loopIt();
arrayIt();
}
/**
* map迭代器
*/
public static void mapIt()
{
System.out.println("=======map迭代器=========");
IterableMap
map = new HashedMap<>(); map.put("a", "baby"); map.put("b", "ohyeah"); map.put("c", "doog"); //使用MapIterator MapIterator
it = map.mapIterator(); while(it.hasNext()) { //移动游标 it.next() String key = it.next(); //或者使用如下方法 /*it.next(); String key = it.getKey();*/ String value = it.getValue(); System.out.println(key+"-->"+value); } } /** * 去重迭代器 */ public static void uniqueIt() { System.out.println("=======去重迭代器========="); List
list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("a"); //去掉重复的过滤器 Iterator
it = new UniqueFilterIterator<>(list.iterator()); while(it.hasNext()) { System.out.println(it.next()); } } /** * 自定义迭代器 */ public static void filterIt() { System.out.println("======= 自定义迭代器========="