在Deque中,remove和pop之间的区别

问题描述

代码

    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()