В документации для ArrayDeque указано:
Этот класс, вероятно, будет быстрее, чем Stack при использовании в качестве стека, и быстрее, чем LinkedList при использовании в качестве очереди.
Не упоминается различие между использованием ArrayDeque в качестве стека и использованием ArrayList. Вы можете использовать ArrayList как стек следующим образом.
list.add(object); // push
object = list.remove(list.size() - 1); // pop
Я обнаружил, что, когда я использовал только ArrayList, его производительность хуже, чем ArrayDeque. Что объясняет это различие? Разумеется, это не просто призывы к size()? Внутри, как ArrayList, так и ArrayDeque реализованы с использованием Object[], который при необходимости заменяется большим массивом, поэтому, конечно, производительность должна быть примерно одинаковой?