Deque中remove()和pop()的区别

use*_*212 -1 java queue collections linked-list deque

这段代码:

    Deque<String> list = new LinkedList<>();
    list.push("first");
    list.push("second");
    list.push("third");
    
    System.out.println(list.remove());
Run Code Online (Sandbox Code Playgroud)

相当于:

    Deque<String> list = new LinkedList<>();
    list.push("first");
    list.push("second");
    list.push("third");
    
    System.out.println(list.pop());
Run Code Online (Sandbox Code Playgroud)

pop() 和remove() 都删除第一个元素(head)。那么,采用两种不同方法的原因是什么?

小智 5

它与遗留接口有关。来自javadoc

双端队列也可以用作 LIFO(后进先出)堆栈。应优先使用此接口而不是旧版 Stack 类。当双端队列用作堆栈时,元素从双端队列的开头推送和弹出。Stack 方法与 Deque 方法完全相同,如下表所示:

Stack 和 Deque 方法的比较

Stack Method | Equivalent Deque Method
push(e) | addFirst(e)
pop() | removeFirst()
peek() | peekFirst()