这是collection的继承及接口关系图,如果用来初始化队列,可以用
Queue <Integer> q = new LinkedList<Integer>();
队列(queue): queue中提供了一些队列的方法,如
*add(E e)😗*将指定元素插入此队列尾部,成功返回true。
**offer(E e)😗*将指定元素插入队列尾部,成功返回true。当队列有容量 限制时,此方法优于add,因为后者可能无法插入,而只是抛出IllegalStateException异常。
**remove()😗*获取并移除队列的头部元素,队列为空抛出异常。
**poll():**获取并移除队列的头部元素,队列为空返回null。
**element()😗*获取但是不移除队列头部元素,队列为空抛出异常。
**peek()😗*获取但是不移除队列头部元素,队列为空返回null。
**isEmpty()😗*判断队列是否为空,为空返回true。
**size()😗*获取队列元素数量.
Deque(双向队列):是指该队列两端的元素既能入队(offer)也能出队(poll),如果将Deque限制为只能从一端入队和出队,则可实现栈的数据结构。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出原则。
stack可以使用数组来构造,也可以使用linkedlist(底层使用链表)来构造,用linkedlist来构造一个栈,可以用
Deque<TreeNode> stack = new LinkedList<TreeNode>();
deque中提供了一些方法,可供stack使用
**addLast(E e)😗*在队列尾部插入元素.
**offerLast(E e)😗*在队列尾部插入元素。
**removeFirst()😗*获取头部元素。
**pollFirst()😗*获取头部元素。
**getFirst()😗*获取头部元素。
**peekFirst()😗*获取头部元素。
//上述方法均和queue中方法一一对应。
//且queue中的方法,deque中均可用。
1
2
**getLast()😗*获取但不移除队列最后一个元素。
**offerFirst()😗*将指定元素插入队列开头。
**peekLast()😗*获取但不移除双端队列最后一个元素。
**pollLast()😗*获取并移除双端队列最后一个元素。
**pop()😗*从双端队列表示的堆栈 中弹出一个元素。
**push()😗*将一个元素推入双端队列表示的堆栈,即队列的头部。成功返回true,如果没有可用空间,抛出IllegalStateException。
**removeLast()😗*获取并移除移除双端队列最后一个元素。
**size()😗*返回双端队列元素数。
**isEmpty()😗*判断队列是否为空,为空返回true。
**remove(Object o)😗*从双端队列中移除第一次出现的指定元素。