Queue
队列是一种比较特殊的线性结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中最先插入的元素也将最先被删除,对应的最后插入的元素将最后被删除。因此队列又称为“先进先出”(FIFO—first in first out)的线性表,与栈(FILO-first in last out)刚好相反。

Queue接口常用方法:

方法
E add() 增加一个元索 ,如果队列已满,则抛出异常
boolean offer(E e) 添加一个元素并返回true 如果队列已满,则返回false
E remove() 移除并返回队列头部的元素 如果队列为空,则抛出异常
E poll() 移除并返问队列头部的元素 如果队列为空,则返回null
boolean isEmpty() 检测优先级队列是否为空,为空返回true,否则false
… …
队列是一种先进先出的数据结构,没有优先级,众数据平等.但是在某些情况下,我们操作的数据可能带有优先级,出队列时要优先级高的先出,低的后出.在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象.这种数据结构就是优先级队列PriorityQueue.

PriorityQueue的底层使用了堆**(heap)**来实现,而堆实际上就是在完全二叉树的基础上进行了一些元素的调整. (首先,堆结构就是用数组实现的完全二叉树结构; 其次,堆中某个节点的值总是不大于或不小于双亲节点的值)

posted on 2023-12-02 12:45  杨申龙  阅读(10)  评论(0)    收藏  举报