java-栈stack,队列queue,双端队列deque

1.Stack继承于Vector,通过数组实现  (不要用啦!淘汰啦!)

Stack<Integer> st = new Stack<Integer>();
System.out.println("stack: " + st); //输出
st.push(a); //压栈
Integer a = (Integer) st.pop(); //出栈
peek(); 返回堆栈顶部的元素,但不删除它。
boolean empty();
int search(Object element):确定对象是否存在于堆栈中。如果找到该元素,它将从堆栈顶部返回元素的位置。否则,它返回-1。

2.Queue。队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

  LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

Queue<String> queue = new LinkedList<String>();
queue.offer("a"); //添加元素
queue.poll(); //返回并删除第一个元素
add()和remove()方法在失败的时候会抛出异常(不推荐)

offer,add 区别:

一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。

这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。

poll,remove 区别:

remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。

peek,element区别:

element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。


 3.Deque双端队列

https://blog.csdn.net/top_code/article/details/8650729
Deque<Integer> mDeque = new ArrayDeque<Integer>();
mDeque.offer(i); //插入元素

栈:
mDeque.push(10);//进栈
mDeque.pop();//出栈

队列:
//队列方式遍历,元素逐个被移除
while (mDeque.peek() != null) {
  System.out.println(mDeque.poll());
}
 
PriorityQueue:
https://baijiahao.baidu.com/s?id=1665383380422326763&wfr=spider&for=pc

posted on 2021-02-08 14:18  大鱼与小鱼  阅读(125)  评论(0)    收藏  举报

导航