栈与队列的异同
相异点/类型
|
队列(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 会被设计成类
因为队列实现方式可以是链表也可以是数组,而且里面是否会阻塞等等存在多样性。