Я бы предложил использовать ArrayList вместо ArrayDeque в следующих случаях
- Используйте ArrayList, если вам нужен доступ к элементам по индексу, и вам нужно только вставить / удалить в конце.
- Использование ArrayDeque в качестве стека, очереди или очереди.
Вставка и удаление в обеих коллекциях.
ArrayList:
В худшем случае O (n), потому что вы должны сместить элементы. Вставка / удаление в конце происходит быстрее, потому что элементов меньше для смещения. Если вы вставляете, когда Arraylist заполнен, вы должны скопировать элементы в новый больший массив, который является O (n).
- Вставка в конце ArrayList занимает амортизированное постоянное время. Это означает, что последовательность из n вставок в изначально пустой ArrayList имеет время выполнения в наихудшем случае O (n), поэтому среднее время выполнения для вставки равно O (1), хотя некоторые вставки могут быть медленнее. Это достигается путем постоянного увеличения размера массива на постоянный коэффициент, поскольку общее количество копируемых элементов является суммой геометрического ряда.
ArrayDeque:
- Удаление спереди или сзади равно O (1), а вставка спереди или сзади занимает амортизированное постоянное время. Реализация JCF не позволяет вставлять / удалять по индексу (если бы это было разрешено, это было бы наихудшим O (n) из-за сдвига).
- У запросов массива нет ограничений по емкости, и они растут по мере необходимости для поддержка использования.
- Они не являются поточно-ориентированными, что означает, что при отсутствии внешней синхронизации
- Нулевые элементы запрещены в ArrayDeque.
теперь ответ на ваш вопрос , Это полностью зависит от ваших требований. После анализа вы можете легко предсказать.
для более подробной информации, пожалуйста, взгляд