Почему arrayOf () такая же, как mutableListOf (), но ограничена? - PullRequest
0 голосов
/ 20 января 2019

Попытка понять, в чем смысл, когда arrayOf() совпадает с mutableListOf(), но удаляет такие функции, как add() и remove()?

1 Ответ

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

Они не одинаковы:

arrayOf() создает Array и mutableListOf() ArrayList под капотом.

Какой из них вы выберете, зависит от вашего приложения.

Массив - это структура данных фиксированного размера.Чтобы добавить / удалить значения, вам нужно создать копию старого массива с новыми изменениями (что дорого), но, независимо от того, какой массив у вас большой, доступ к элементу имеет постоянную временную сложность.Вы должны сделать это вручную, хотя.

С другой стороны, ArrayList также использует массив для внутреннего представления, но предоставляет вам изменяемый интерфейс.Таким образом, добавление / удаление элемента все равно приведет к копированию внутреннего массива, но этот процесс абстрагируется от вас.

Вывод:

  • Есливам нужно инициализировать список один раз и после того, как вы получите к нему доступ, вы должны использовать Array.
  • Если вам нужно добавлять / удалять элементы в очень редких случаях, и большинство читают, вы должны использовать ArrayList.
  • Если вам нужно постоянно добавлять / удалять значения, используйтеLinkedList.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...