2012-01-26 2 views
2

Каково было бы использование связанного списка массивов?Java и коллекции: когда использовать связанный список массивов?

Я читал, что если данные велики и разрешены вставки (например, текстовый буфер), то общей мерой половины является использование связанного списка массивов.
Но не было никаких объяснений о том, в чем преимущество использования такой структуры.

По крайней мере, я не понял.

Итак, какова будет польза от использования linked list of arrays и когда?

+1

Ваш вопрос странный. Вы используете связанный список массивов, когда вам нужен связанный список массивов. Извините за сарказм, но вы также можете попробовать узнать о преимуществах использования HashSet массивов или, возможно, потока массивов. – bezmax

+0

Я понимаю, о чем вы говорите. Моя проблема в том, что это было упомянуто в материале, который я читаю, касающемся производительности, и он упомянул эту структуру данных (по крайней мере, так я ее понял) как «трюк» между использованием «связанного списка» который имеет медленный доступ, но быстрые вставки и удаления и «массив», который в точности противоположный. Я думал, что это может быть общий «трюк». Я не знаю. – Cratylus

+0

Для быстрых вставок, удалений и доступа мы используем ArrayList в Java. Нет необходимости в каких-либо настраиваемых структурах данных, если вам это не требуется для некоторых конкретных данных, которые требуют этой настраиваемой структуры. – bezmax

ответ

2

Со связанным списком массивов вы можете легко комбинировать преимущества связанных списков и статических массивов.

Проверьте this вопрос.

0

Я могу представить противоположную ситуацию: массив связанных списков (фактически hashmap), где каждый элемент массива представляет собой ведро, которое указывает на список, который может динамически расти. Добавляется словарь словаря, который строится, и новые слова, но количество букв постоянное.

Некоторые примеры того, что вы описали, могут быть skip list based solution Я также могу подумать об эффективном хэшировании или реализации динамической очереди постоянных наборов пакетных заданий.

+0

Я думаю, что это обратное тому, что я описываю – Cratylus

+0

@ user384706, первый абзац, безусловно, является обратным тому, что вы описываете (это четко указано там). 2-й основан на запрошенном вами списке массивов. – aviad

0

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

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

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

P.S. Кроме того, если скорость действительно важна для вас, во-первых, я бы сделал небольшое исследование с сопоставлением существующей реальной реализации структур данных (ArrayList, LinkedList, массивы и т. Д.).

0

Когда вам понадобится быстрый поиск объектов из коллекции, и вы не будете уверены, что у вас достаточно памяти для выделения массива «весь» (реализация ArrayList), вы можете написать свою собственную реализацию, которая использует список массивов для быстро быстро найдите объект, который вы ищете.

Но для этого подхода существуют определенные структуры данных.

0

Подумайте об этой проблеме:

Вообразите (буквальную) стопку пластин Если стек становится слишком высоким, то может опрокинуть там- носа, в реальной жизни, мы, скорее всего, начать новую стек, когда предыдущий стек превышает некоторый порог Реализовать массив данных структуру SetOfStacks, имитирующие этот SetOfStacks должен быть состоит из нескольких стеков, и необходимо создать новый стек после того, как предыдущий один превышает емкость (крекинг технологии код Интервью)

Смежные вопросы