此代码:
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:
Deques也可用作后进先出(LIFO(堆栈。应该优先使用此接口,而不是传统的Stack类。当deque用作堆栈时,元素会从deque的开头被推送和弹出。堆栈方法与下表所示的Deque方法完全等效:
Stack和Deque方法的比较
Stack Method|Equivalent Deque Method
push(e)|addFirst(e)
pop()|removeFirst()
peek()|peekFirst()