ArrayDeque реализован в виде массива, почему это не произвольный доступ? - PullRequest
0 голосов
/ 24 января 2019

Я знаю, что ArrayDeque работает быстро при добавлении и удалении простых списков. Я на самом деле проверил это, было быстрее добавлять и удалять, чем LinkedList. Потому что я знаю, что он реализован в виде массива, так почему бы не использовать произвольный доступ?

Я прочитал файл ArrayDeque.java в Java src. Но я плохо понимаю свои знания английского. Я видел много статей от Google и Stack Overflow, но я не получил ответы на свои вопросы.

В заключение я хочу получить ответ:

1. Почему ArrayDeque не произвольный доступ? (мне очень любопытно) 2. В каких ситуациях используется ArrayDeque? 3. ArrayDeque не реализован как Array? (Знаю ли я неверные знания?)

Большое спасибо за ваш ответ!

Ответы [ 3 ]

0 голосов
/ 24 января 2019
  1. Поскольку вы не можете получить доступ к элементу на i-й позиции в постоянное время, наихудший случай.
  2. Всякий раз, когда вам нужно добавлять и брать элементы с обоих концов.
  3. Да, поддерживается массивом.
0 голосов
/ 24 января 2019

Ответ в том, что нет веской причины.Было бы легко добавить постоянное время get(int) и set(int,E) к ArrayDeque.Мне не раз приходилось реализовывать алгоритмы ArrayDeque в ArrayList, чтобы восполнить этот недостаток.

0 голосов
/ 24 января 2019

Как упомянуто в здесь , ArrayDeque - реализация массива изменяемого размера интерфейса Deque. Подчеркивает структуру данных Array. Тем не менее, он не поддерживает произвольный доступ, поскольку предоставляет интерфейс двусторонней очереди. Если вы хотите получить доступ к случайному элементу Deque, вы можете вызвать toArray(), а затем получить доступ к элементам по индексу.

...