I've read through the docs and looked through the java source code. I don't understand the difference between the following:
vs
No matter what I do, I cannot get a different result when calling these 2 methods. Do they always return the same? Is one just for backwards compatibility?
https://docs.oracle.com/javase/7/docs/api/java/util/Deque.html
import java.util.LinkedList;
public class MyClass {
public static void main(String args[]) {
LinkedList<Integer> l = new LinkedList<>();
l.add(2);
l.addFirst(3);
l.add(4);
l.addLast(5);
l.remove(2);
l.offer(6);
l.poll();
l.add(7);
System.out.println(l.toString());
System.out.println(l.peek());
System.out.println(l.peekFirst());
}
}
Returns the following:
[2, 5, 6, 7] // toString
2 // peek
2 // peekFirst
peek()
is inherited from the Queue
interface, which only has access to the head of the queue. Deque
is double-ended, so it introduced a peekLast()
method and peekFirst()
for symmetry. The docs make it clear that they're equivalent:
This method is equivalent to
peekFirst()
.
See also the table at the top:
The methods inherited from the Queue interface are precisely equivalent to Deque methods as indicated in the following table:
Comparison of Queue and Deque methods +────────────────+───────────────────────────+ | Queue Method | Equivalent Deque Method | +────────────────+───────────────────────────+ | add(e) | addLast(e) | | offer(e) | offerLast(e) | | remove() | removeFirst() | | poll() | pollFirst() | | element() | getFirst() | | peek() | peekFirst() | +────────────────+───────────────────────────+