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