package commons之集合与队列;
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.只读队列即 不可改变队列
-
- 断言队列
-
断言:在测试阶段会有这种检查,而在发布阶段能自动删除这些东西。 这就是断言机制。
*/
public class Demo02 {
public static void main(String[] args) {
System.out.println("====循环队列=====");
circular();
System.out.println("====只读队列=====");
//readOnly();报异常;只读无法写入
System.out.println("====断言队列=====");
//predicate();//报异常;空的无法写入
}
/**
* 循环队列
*/
public static void circular(){//circular循环
//循环队列
CircularFifoQueue<String> que = new CircularFifoQueue<>(2);
que.add("a");
que.add("b");
que.add("c");
//查看
for(int i=0;i<que.size();i++){
System.out.println(que.get(i));//只能放2个;"c"进来"a"就被覆盖
}
}
/**
* 只读队列
*/
public static void readOnly(){//readOnly()只读
CircularFifoQueue<String> que = new CircularFifoQueue<>(2);
que.add("a");
que.add("b");
que.add("c");
Queue<String> readOnlyQue = UnmodifiableQueue.unmodifiableQueue(que);
//测试
readOnlyQue.add("d");//"java lang UnsupportedOperationException"不支持的操作异常
}
/**
* 断言队列
*/
public static void predicate(){//predicate断言;谓语
CircularFifoQueue<String> que = new CircularFifoQueue<>(2);
que.add("a");
que.add("b");
que.add("c");
Predicate notNull = NotNullPredicate.INSTANCE;//INSTANCE实例
//包装成对应的队列;放入que与notNull
Queue<String> que2 = PredicatedQueue.predicatedQueue(que, notNull);
que2.add(null);//报异常;空的无法添加
}
}
//结果--------------------------------------------------
循环队列=
b
c
只读队列=
报异常
断言队列=
报异常