ArrayDeque Vs Linkedlist
ArrayDeque works by keep track of a head and tail pointers inside an ArrayList.
Which have the time complexity of $O(1)$ add for both head and tail
LinkedList is similar but for LinkedList, random access is costly. And thus could have performance hit.
We should use ArrayDeque in most case
Benchmarking showing that LinkedList is much slower comparing to ArrayDeque

When should we use linkedlist
ArrayDeque doesn't implement the List interface. So therefore bad for backward compatibility.
LinkedList implements both Deque and List