问题描述
此代码:
Deque<String> list = new LinkedList<>();
list.push("first");
list.push("second");
list.push("third");
System.out.println(list.remove());
等效于:
Deque<String> list = new LinkedList<>();
list.push("first");
list.push("second");
list.push("third");
System.out.println(list.pop());
pop()和remove()都删除第一个元素(头)。那么,拥有两种不同方法的原因是什么?
解决方法
它与旧版接口有关。来自javadoc:
双端队列也可以用作LIFO(后进先出)堆栈。此接口应优先于旧版Stack类使用。当双端队列用作堆栈时,元素从双端队列的开始处被压入并弹出。堆栈方法完全等同于Deque方法,如下表所示:
堆栈和双端队列方法的比较
Stack Method | Equivalent Deque Method
push(e) | addFirst(e)
pop() | removeFirst()
peek() | peekFirst()