Ключевая разница - ArrayList и LinkedList
Коллекции удобны для хранения данных. В обычном массиве размер массива фиксирован. Иногда требуется создавать массивы, которые могут расти по мере необходимости. Языки программирования, такие как Java, имеют коллекции. Это фреймворк с набором классов и интерфейсов. Он служит контейнером для группы элементов. Коллекции позволяют хранить, обновлять, извлекать множество элементов. Это помогает работать со структурами данных, такими как списки, множества, деревья и карты. Список представляет собой интерфейс фреймворка Collection. ArrayList и LinkedList - это два класса в структуре коллекций. Они реализуют интерфейс коллекции и интерфейс списка. В этой статье обсуждается разница между ArrayList и LinkedList. ArrayList - это класс, который расширяет AbstractList и реализует интерфейс List, который внутри использует динамический массив для хранения элементов данных. LinkedList - это класс, который расширяет AbstractSequentialList и реализует интерфейсы List, Deque и Queue, которые внутренне используют двусвязный список для хранения элементов данных. В этом ключевое различие между ArrayList и LinkedList.
Что такое ArrayList?
Класс ArrayList используется для создания динамических массивов. В отличие от обычного массива размер динамического массива не фиксирован. Объект, созданный с использованием класса ArrayList, может хранить набор элементов в списке. Емкость увеличивается автоматически, поэтому программист может добавлять элементы в список. Класс ArrayList расширяет класс AbstractList, который реализует интерфейс List. Следовательно, методы интерфейса List могут использоваться ArrayList. Для доступа к элементам используется метод get(). Метод add() может использоваться для добавления элементов в список. Метод remove() используется для удаления элемента из списка. См. приведенную ниже программу.
Рисунок 01: Пример ArrayList
В соответствии с приведенной выше программой создается объект ArrayList. Используя метод add, элементы могут добавляться динамически. Элементы «A», «B», «C», «D» и «E» добавляются с помощью метода add. Метод remove используется для удаления элемента из списка. При передаче 4 в метод удаления из списка удаляется буква в 4-м индексе, равная «Е». При переборе списка с использованием цикла for будут напечатаны буквы A, B, C и D.
Что такое LinkedList?
Подобно ArrayList, LinkedList используется для динамического хранения элементов данных. Объект, созданный с использованием класса LinkedList, может хранить набор элементов в списке. Емкость увеличивается автоматически, поэтому программист может добавлять элементы в список. Он внутренне использует двусвязный список для хранения данных. В двусвязном списке данные хранятся в виде узлов. Каждый узел содержит две ссылки. Первая ссылка указывает на предыдущий узел. Следующая ссылка указывает на следующий узел в последовательности.
Класс LinkedList расширяет класс AbstractSequentialList и реализует интерфейс List. Следовательно, методы интерфейса List могут использоваться LinkedList. Метод get() можно использовать для доступа к элементам списка. Метод add() может использоваться для добавления элементов в список. Метод remove() используется для удаления элемента из списка. См. приведенную ниже программу.
Рисунок 02: Пример с LinkedList
В соответствии с приведенной выше программой создается объект LinkedList. Используя метод add, элементы могут добавляться динамически. Элементы «A», «B», «C», «D» и «E» добавляются с помощью метода add. Метод remove используется для удаления элемента из списка. При передаче 4 в метод удаления буква в 4-м индексе, которая равна «E», удаляется из списка. При повторении с использованием цикла for будут напечатаны буквы A, B, C и D.
В чем сходство между ArrayList и LinkedList?
- И ArrayList, и LinkedList реализуют интерфейс List.
- И ArrayList, и LinkedList могут содержать повторяющиеся элементы.
- И ArrayList, и LinkedList сохраняют порядок вставки.
В чем разница между ArrayList и LinkedList?
ArrayList против LinkedList |
|
ArrayList - это класс, который расширяет AbstractList и реализует интерфейс List, который внутренне использует динамический массив для хранения элементов данных. | LinkedList - это класс, который расширяет AbstractSequentialList и реализует интерфейсы List, Deque, Queue, который внутренне использует двусвязный список для хранения элементов данных. |
Доступ к элементам | |
Доступ к элементам ArrayList быстрее, чем к LinkedList. | Доступ к элементам LinkedList медленнее, чем к элементам ArrayList. |
Управление элементами | |
Управление элементами ArrayList медленнее, чем LinkedList. | Управлять элементами LinkedList быстрее, чем ArrayList. |
Поведение | |
ArrayList работает как список. | LinkedList работает как список и как очередь. |
Резюме – ArrayList против LinkedList
Среда сбора позволяет работать со структурами данных, такими как списки, деревья, карты и наборы. Список представляет собой интерфейс структуры коллекции. В этой статье обсуждалась разница между ArrayList и LinkedList. ArrayList - это класс, который расширяет AbstractList и реализует интерфейс List, который внутренне использует динамический массив для хранения элементов данных. LinkedList - это класс, который расширяет AbstractSequentialList и реализует интерфейсы List, Deque, Queue, который внутренне использует двусвязный список для хранения элементов данных. В этом разница между ArrayList и LinkedList.