Списки связанные или связанные списки структур линейные для хранения объектов одного типа. Эти объекты связаны друг с другом с помощью указателей, которые держат позиции вблизи объекта из списка.
Эти списки могут быть двух видов:
- Списки прикованный простой: где каждый элемент хранится адрес памяти, где находится следующий элемент списка:
- Списки вдвойне цепочку: где каждый элемент хранится адрес памяти, где находится расположение на предыдущий и следующий элемент списка:
Списки Прикованный в Java
В Java, implementaçãos из списков прикованный производится по коллекции LinkedList, который представляет собой список круговой вдвойне связной. В такой список, каждый элемент является именем узла, и каждый узел сохраняет в себе, кроме того, элемент, положение предыдущего элемента и положение элемента более поздней версии.
В памяти, LinkedList не хранится последовательно. Она становится распределенной, поэтому важно быть положение элементов более ранних и более на каждом узле. Тот факт, что распространяется в памяти, что список может расти во время выполнения программы таким образом, ограничено только объемом доступной физической памяти.
На приведенном выше примере, мы видим, что использование LinkedList-это очень похоже на использование ArrayList. Итак, в чем будет преимущество использовать LinkedList?
Performance! Если вам нужно что ваш список имеет лучшую производительность на добавление и/или удаление элементов, то вы должны использовать LinkedList! Но почему? Потому что производительность лучше для методов add и remove?
Если мы говорим вставки/удаления в конце или в начале списка, это простая операция: после создания узла, будет производиться обновление из позиций на элементы:
Если мы говорим вставки/удаления в середине списка, перед вставкой, будет еще операция поиска места, где должен быть вставлен элемент, то теряет немного в производительности в этом случае, однако следует помнить, что Java в этом случае выбирает наименьший путь.
Однако, когда мы говорим операций поиска конкретных элементов в LinkedList, ведет себя как ArrayList, а именно: в худшем случае, это необходимо будет прокручивать весь список.
В заключение, лучшие означает, что это хорошее время, чтобы использовать LinkedList являются:
- Когда не будет необходимости допуска элементов, случайным образом;
- Когда будут внесены многих операций вставки/удаления элементов;
- При необходимости, что рост в список является динамическим.
Библиография:
Этот разработчик отличный здесь
Diferença entre список массивов, Вектор e список ссылок em Ява
LinkedLists: что происходит за интерфейс
Официальной документации
Оригинал: “https://dev.to/ccunha/listas-encadeadas-157”