Почему это предпочтено для использования Списков вместо Массивов в Java?

Многие люди и авторы, предложенные нам для использования списка, чем массив.

List <Integer> list = new ArrayList<Integer>();
list.addElement(1);
....

Что это - причина позади него?

12
задан cherouvim 6 March 2010 в 06:26
поделиться

6 ответов

Обычно вам следует выбирать правильную структуру данных для работы. Вы должны понимать свою задачу, а также все различные варианты, которые у вас есть, и то, как они сравниваются с точки зрения итераций, поиска, добавления, удаления и вставки данных. В общем, вам необходимо понимать, как структура данных обращается к памяти и управляет ею, и выбирать лучшую структуру данных в зависимости от того, как вы ожидаете, что ваше приложение будет использоваться.

Очевидно, это не всегда однозначно. Но вы можете понять идеалы для разных структур данных.

Например, чисто статические данные фиксированной длины, в которых вы будете выполнять только итерацию, без необходимости поиска, идеально подходят для массива. Такие массивы обычно используются в алгоритмах шифрования. Если данные статичны, но вместо повторения вам нужно выполнить поиск, вам может потребоваться какая-то древовидная структура. Если вам нужна быстрая вставка, вероятно, идеальным вариантом будет хеширование. Если данные часто меняются, вам нужна структура, которая эффективно изменяет свой размер, например список.

Конечно, существует множество вариаций и комбинаций структур данных, предназначенных для решения всевозможных конкретных проблем. Причина, по которой их так много, в том, что они играют важную роль в написании эффективных программ. В любом случае, я хочу узнать о структурах данных. Поймите идеальные ситуации для каждого, и тогда вы сможете решить или спроектировать подходящие структуры данных для любой задачи.

14
ответ дан 2 December 2019 в 07:02
поделиться

Я использую списки, списки массивов и т. Д. В основном потому, что мне не нужно беспокоиться о том, где находится следующий свободный слот и достаточно ли он велик, поскольку Sun уже сделала это за меня.

0
ответ дан 2 December 2019 в 07:02
поделиться

Следует иметь в виду, что классы Java Collections предпочитают простоту использования общего назначения, а не оптимизацию для конкретных сценариев. Итак, как сказал предыдущий респондент, вам действительно нужно подумать, как вы собираетесь его использовать.

Например, если вы создаете «большие» структуры данных, то ArrayList может стать довольно неэффективным. Каждый раз, когда вы достигаете предела массива, он выделяет новый (я считаю) в 2 раза больше. Таким образом, в среднем ArrayList будет использоваться только на 75%.

В целом можно рассматривать Коллекции Java как первое приближение, которое обычно достаточно хорошо большую часть времени, и когда у вас есть измеримые проблемы с производительностью, вы должны быть готовы использовать альтернативные, более специализированные реализации Коллекции .

В случае, о котором вы упомянули, вы можете рассматривать ArrayList просто как более удобный способ работы с массивом.

1
ответ дан 2 December 2019 в 07:02
поделиться

Из Array vs ArrayList

ArrayList лучше, чем Array, чтобы использовать его, когда вы не знаете {{1 }} подробнее о количестве элементов. ArrayList медленнее, чем Arrays. Итак, , если вам нужна эффективность, попробуйте по возможности использовать массивы .

4
ответ дан 2 December 2019 в 07:02
поделиться

Списки могут легко увеличиваться в размере, и вы можете легко добавлять и удалять элементы в середине списка. Этого нельзя сделать с массивами. Однако вам нужно подумать, для чего вам нужен список. Если вы не думаете, что список сильно изменится, используйте вместо него массив.

3
ответ дан 2 December 2019 в 07:02
поделиться

РЕДАКТИРОВАТЬ:
В некоторых случаях при работе с примитивными типами лучше использовать массивы, потому что в случае Arraylists это включает упаковку и распаковку примитивов, которые могут быть немного медленнее по сравнению с обработкой примитивов с массивами.

0
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: