标签:lin 导致 保存时间 list() element push 较差 ble 结构
Queue用于模拟队列这种数据结构,队列通常是指“先进先出”(FIFO)容器。队列的头部元素是保存时间最长的元素,队列的尾部元素是保存时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列的头部元素。通常,队列不允许随机访问队列中的元素。
PriorityQueue是一个比较标准的队列实现类,之所以说是“比较标准”,是因为,PriorityQueue保存队列元素的顺序并不是按照添加顺序,而是按队列元素的大小进行重新排列的。(从这个意义上看,PriorityQueue已经违反了队列的基本原则)
PriorityQueue priorityQueue = new PriorityQueue();
priorityQueue.add(100);
priorityQueue.add(-99);
priorityQueue.add(88);
priorityQueue.add(-10);
System.out.println(priorityQueue); //[-99, -10, 88, 100]
System.out.println(priorityQueue.poll()); //访问队列的第一个元素,其实就是队列中最小的元素
PriorityQueue不允许插入null元素。
PriorityQueue的元素排序有两种方式:
Deque接口是Queue接口的子接口,它代表一个双端队列,Deque接口里定义了一些双端队列的方法,这些方法允许从两端来操作队列的元素。
Deque不仅可以当成双端队列来使用,而且可以当成栈来使用。
ArrayDeque是一个Deque基于数组的实现类,创建Deque时同样可以指定一个numElement参数,该参数用于指定Object[]数组的长度,如果不定义numElement,则Deque底层数组的长度为16.
ArrayDeque arrayDeque = new ArrayDeque();
arrayDeque.push("直死");
arrayDeque.push("之");
arrayDeque.push("魔眼");
System.out.println(arrayDeque); //[魔眼, 之, 直死]
//访问第一个元素,但不将其pop出栈
System.out.println(arrayDeque.peek());
//pop出第一个元素
System.out.println(arrayDeque.pop());
当程序中需要使用到“栈”这种数据结构的时候,尽量避免使用Stack,使用ArrayDeque。——因为Stack是一个古老的集合,性能较差。
把PriorityQueue当队列使用:
ArrayDeque arrayDeque = new ArrayDeque();
arrayDeque.offer("两仪");
arrayDeque.offer("shiki");
//只返回队首元素,不删除
String ly = (String) arrayDeque.peek();
System.out.println(ly);
//删除队首元素,并返回
System.out.println(arrayDeque.pop());
相当于双端队列的链表数据结构。
LinkedList linkedList = new LinkedList();
linkedList.offer("添加到队尾");
linkedList.push("添加到栈的顶部");
linkedList.offerFirst("添加到队列的头部");
//以List的方式(按索引访问)遍历集合元素
for (int i = 0;i<linkedList.size();i++){
System.out.println("遍历LinkedList中:"+linkedList.get(i));
}
//访问并不删除队首的元素
System.out.println(linkedList.peekFirst());
//访问并不删除队尾的元素
System.out.println(linkedList.peekLast());
//将队顶的元素弹出栈
System.out.println(linkedList.pop());
//将访问并删除队尾元素
System.out.println(linkedList.pollLast());
System.out.println(linkedList);
LinkedList与ArrayList、ArrayDeque的实现机制完全不同,ArrayList、ArrayDeque内部以数组的形式来保存集合中的元素,因此随机访问集合元素时有较好的性能;而LinkedList内部以链表的形式来保存集合中的元素,因此,随机访问集合元素的性能较差,但在插入、删除元素时,性能比较出色。
Queue集合 与 PriorityQueue ArrayDeque LinkedList实现类相关
标签:lin 导致 保存时间 list() element push 较差 ble 结构
原文地址:https://www.cnblogs.com/woshi123/p/12503505.html