队列与栈

队列与栈

栈与队列的异同
相异点/类型
队列(Queue)
栈(stack) 
相关方法
add/offer /poll/element
压入push/弹出pop/empty是否为空
用户结构形式
两端进行操作的线性结构
一端操作的线性结构
变种
优先队列
双栈
队列的相关方法API
boolean empty()  测试堆栈是否为空。
E peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
E pop()   移除堆栈顶部的对象,并作为此函数的值返回该对象。
E push(E item)    把项压入堆栈顶部。
int search(Object o)     返回对象在堆栈中的位置,以 1 为基数。
 
队列的实现类:  linkLIst (双向循环链表)   arrayDequeue (数组实现的双端队列)、PriorityQueue(优先队列)
 
why 队列会被java 设计成接口,而stack 会被设计成类
因为队列实现方式可以是链表也可以是数组,而且里面是否会阻塞等等存在多样性。