import java.util.ArrayDeque;
import java.util.PriorityQueue;
/* 2017-02-18 09:09:21
*
* queue
* 用于模拟队列这种数据结构
* 队列通常是 先进先出 FIFO
* 队列的头部保存在队列中存放时间最长的元素
* 队列的尾部保存在队列中存放时间最短的元素
* poll操作会返回队列头部的元素,
*队列不允许随机访问队列中的元素
*
*add 添加元素到尾部
*offer 将制定元素加入此队列的尾部 当使用有容量限制的队列时 此方法比add好
*
*element 获取 头部元素 但不删除
*peek 获取队列头部的元素 但不删除
*
*poll 获取队列头的元素, 并删除
*remove 获取头部元素并删除
*
*
*
* priorityQueue实现类
* 是一个标准的队列实现类,
* 是按照队列元素的大小进行重新排序
* 并不是取出最先进入的元素,而是最小的元素,
*
* Deque接口时queue接口的子接口,它代表一个双端队列
* 使用的是双端操作方法
*
* ArrayDeque 是一个典型的实现类
* 基于数组实现的双端队列
* 可以指定一个numElements 参数 底层数组的默认长度是16
*
*
*
* arraylist array deque 两个集合类 的实现机制基本相似
* 底层都采用一个动态的、可重分配的object[] 数组来存储集合元素
*/
public class Queuej {
public static void main(String[] args) {
// priorityqueue();
//模拟栈
ArrayDeque stack = new ArrayDeque();
stack.push("ca");
stack.push("fe");
stack.push("ba");
stack.push("be");
System.out.println(stack);
//模拟队列
ArrayDeque queue = new ArrayDeque<>();
queue.offer("ca");
queue.offer("fe");
System.out.println(queue.peek());
System.out.println(queue);
}
/* 2017-02-18 09:50:22
*
*/
private static void priorityqueue() {
PriorityQueue priorityQueue = new PriorityQueue();
priorityQueue.offer(2);
priorityQueue.offer(3);
priorityQueue.offer(1);
priorityQueue.offer(8);
priorityQueue.offer(6);
System.out.println(priorityQueue);
// 自然排序 需要实现comparable 接口 是一个类的多个实例 否则导致异常
// 定制排序 传入一个comparator对象
}
}