Spec-Zone .ru
спецификации, руководства, описания, API
След: Наборы
Урок: Реализации
Реализации списка
Домашняя страница > Наборы > Реализации

Реализации списка

List реализации группируются в реализации специального назначения и общего назначения.

Реализации Списка общего назначения

Есть два общего назначения List реализации — ArrayList и LinkedList. Большую часть времени Вы будете, вероятно, использовать ArrayList, который предлагает постоянно-разовый позиционный доступ и просто быстр. Это не должно выделить объект узла для каждого элемента в List, и это может использовать в своих интересах System.arraycopy когда это должно переместить многократные элементы одновременно. Думать ArrayList как Vector без издержек синхронизации.

Если Вы часто добавляете элементы к началу List или выполните итерации по List чтобы удалить элементы из его внутренней части, следует рассмотреть использование LinkedList. Эти операции требуют постоянно-разовый в a LinkedList и линейно-разовый в ArrayList. Но Вы платите большую цену в производительности. Позиционный доступ требует линейно-разовый в a LinkedList и постоянно-разовый в ArrayList. Кроме того, постоянный множитель для LinkedList намного хуже. Если Вы думаете, что хотите использовать a LinkedList, определите эксплуатационные качества своего приложения с обоими LinkedList и ArrayList прежде, чем сделать Ваш выбор; ArrayList обычно быстрее.

ArrayList имеет один настраивающий параметр — начальная емкость, которая обращается к числу элементов ArrayList может содержать прежде, чем это должно будет вырасти. LinkedList не имеет никаких настраивающих параметров и семи дополнительных операций, одна из которых clone. Другие шесть addFirst, getFirst, removeFirst, addLast, getLast, и removeLast. LinkedList также реализации Queue интерфейс.

Реализации Списка специального назначения

CopyOnWriteArrayList a List реализация поддерживается массивом копии на записи. Эта реализация подобна в природе CopyOnWriteArraySet. Никакая синхронизация не необходима, даже во время итерации, и iterators, как гарантируют, никогда не не бросят ConcurrentModificationException. Эта реализация хорошо подходит для поддержания списков обработчика событий, в которых изменение является нечастым, и обход является частым и потенциально отнимающим много времени.

Если Вы нуждаетесь в синхронизации, a Vector будет немного быстрее чем ArrayList синхронизируемый с Collections.synchronizedList. Но Vector имеет загрузки операций наследства, так делать все возможное всегда управлять Vector с List взаимодействуйте через интерфейс или иначе Вы не будете в состоянии заменить реализацию в более позднее время.

Если Ваш List фиксируется в размере — то есть, Вы никогда не будете использовать remove, add, или любая из объемных операций кроме containsAll — у Вас есть третья опция, это определенно достойно рассмотрения. См. Arrays.asList в разделе Реализаций Удобства для получения дополнительной информации.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Реализации Набора
Следующая страница: Реализации Карты