Ключова разлика – ArrayList срещу LinkedList
Колекциите са полезни за съхраняване на данни. В нормален масив размерът на масива е фиксиран. Понякога се изисква да се създадат масиви, които могат да растат според нуждите. Езиците за програмиране като Java имат колекции. Това е рамка с набор от класове и интерфейси. Той служи като контейнер за група от елементи. Колекциите позволяват съхраняване, актуализиране, извличане на набор от елементи. Помага при работа със структури от данни като списъци, набори, дървета и карти. Списъкът е интерфейс на рамката на колекцията. 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. Методът за премахване се използва за премахване на елемент от списъка. Когато предавате 4 на метода за премахване, буквата в 4-тия индекс, която е „E“, се премахва от списъка. Когато итерирате през списъка с помощта на цикъла 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. Методът за премахване се използва за премахване на елемент от списъка. При предаване на 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.