Kluczowa różnica - ArrayList vs LinkedList
Kolekcje są przydatne do przechowywania danych. W normalnej tablicy rozmiar tablicy jest stały. Czasami wymagane jest tworzenie tablic, które mogą rosnąć w razie potrzeby. Języki programowania, takie jak Java, mają kolekcje. Jest to framework z zestawem klas i interfejsów. Służy jako pojemnik na grupę elementów. Kolekcje pozwalają na przechowywanie, aktualizację, pobieranie zestawu elementów. Pomaga w pracy ze strukturami danych, takimi jak listy, zbiory, drzewa i mapy. Lista jest interfejsem struktury kolekcji. ArrayList i LinkedList to dwie klasy w ramach kolekcji. Implementują interfejs kolekcji i interfejs listy. W tym artykule omówiono różnicę między ArrayList i LinkedList. ArrayList to klasa, która rozszerza AbstractList i implementuje interfejs List, który wewnętrznie używa tablicy dynamicznej do przechowywania elementów danych. LinkedList to klasa, która rozszerza AbstractSequentialList i implementuje interfejsy List, Deque i Queue, które wewnętrznie używają podwójnie połączonej listy do przechowywania elementów danych. To jest kluczowa różnica między ArrayList i LinkedList.
ZAWARTOŚĆ
1. Przegląd i kluczowe różnice
2. Co to jest ArrayList
3. Co to jest LinkedList
4. Podobieństwa między ArrayList i LinkedList
5. Bezpośrednie porównanie - ArrayList vs LinkedList w formie tabelarycznej
6. Podsumowanie
Co to jest ArrayList?
Klasa ArrayList służy do tworzenia tablic dynamicznych. W przeciwieństwie do zwykłej tablicy, rozmiar tablicy dynamicznej nie jest ustalony. Obiekt utworzony za pomocą klasy ArrayList może przechowywać zestaw elementów na liście. Pojemność wzrasta automatycznie, więc programista może dodawać elementy do listy. Klasa ArrayList stanowi rozszerzenie klasy AbstractList, która implementuje interfejs List. Dlatego metody interfejsu List mogą być używane przez ArrayList. Aby uzyskać dostęp do elementów, używana jest metoda get (). Do dodawania elementów do listy można użyć metody add (). Metoda remove () służy do usuwania elementu z listy. Zapoznaj się z poniższym programem.
Rysunek 01: Przykład ArrayList
Zgodnie z powyższym programem tworzony jest obiekt ArrayList. Korzystając z metody add, elementy można dodawać dynamicznie. Elementy „A”, „B”, „C”, „D” i „E” dodaje się metodą add. Metoda remove służy do usuwania elementu z listy. Po przekazaniu 4 do metody remove, litera w czwartym indeksie, czyli „E”, jest usuwana z listy. Podczas iteracji po liście przy użyciu pętli for, zostaną wydrukowane litery A, B, C i D.
Co to jest LinkedList?
Podobnie jak ArrayList, LinkedList służy do dynamicznego przechowywania elementów danych. Obiekt utworzony za pomocą klasy LinkedList może przechowywać zestaw elementów na liście. Pojemność wzrasta automatycznie, więc programista może dodawać elementy do listy. Wewnętrznie używa podwójnie połączonej listy do przechowywania danych. Na podwójnie połączonej liście dane są przechowywane jako węzły. Każdy węzeł zawiera dwa łącza. Pierwsze łącze wskazuje na poprzedni węzeł. Następne łącze wskazuje na następny węzeł w sekwencji.
Klasa LinkedList rozszerza klasę AbstractSequentialList i implementuje interfejs List. Dlatego metody interfejsu List mogą być używane przez obiekt LinkedList. Do uzyskania dostępu do elementów listy można użyć metody get (). Do dodawania elementów do listy można użyć metody add (). Metoda remove () służy do usuwania elementu z listy. Zapoznaj się z poniższym programem.
Rysunek 02: Przykład z LinkedList
Zgodnie z powyższym programem tworzony jest obiekt LinkedList. Korzystając z metody add, elementy można dodawać dynamicznie. Elementy „A”, „B”, „C”, „D” i „E” dodaje się metodą add. Metoda remove służy do usuwania elementu z listy. Przekazując 4 do metody remove, litera w czwartym indeksie, czyli „E”, usuwa się z listy. Podczas iteracji za pomocą pętli for zostaną wydrukowane litery A, B, C i D.
Jakie są podobieństwa między ArrayList i LinkedList?
- Zarówno ArrayList, jak i LinkedList implementują interfejs List.
- Zarówno ArrayList, jak i LinkedList mogą zawierać zduplikowane elementy.
- Zarówno ArrayList, jak i LinkedList obsługują kolejność wstawiania.
Jaka jest różnica między ArrayList a LinkedList?
Porównaj środek artykułu przed tabelą
ArrayList vs LinkedList |
|
ArrayList to klasa, która rozszerza AbstractList i implementuje interfejs List, który wewnętrznie używa tablicy dynamicznej do przechowywania elementów danych. | LinkedList to klasa, która rozszerza AbstractSequentialList i implementuje interfejsy List, Deque, Queue, które wewnętrznie używają podwójnie połączonej listy do przechowywania elementów danych. |
Dostęp do elementów | |
Dostęp do elementów ArrayList jest szybszy niż w przypadku LinkedList. | Dostęp do elementów LinkedList jest wolniejszy niż w przypadku ArrayList. |
Manipulowanie elementami | |
Manipulowanie elementami ArrayList jest wolniejsze niż w przypadku LinkedList. | Manipulowanie elementami LinkedList jest szybsze niż w przypadku ArrayList. |
Zachowanie | |
ArrayList działa jako lista. | LinkedList działa jako lista i kolejka. |
Podsumowanie - ArrayList vs LinkedList
Struktura kolekcji umożliwia pracę ze strukturami danych, takimi jak listy, drzewa, mapy i zbiory. Lista jest interfejsem struktury kolekcji. W tym artykule omówiono różnicę między ArrayList i LinkedList. ArrayList to klasa, która rozszerza AbstractList i implementuje interfejs List, który wewnętrznie używa tablicy dynamicznej do przechowywania elementów danych. LinkedList to klasa, która rozszerza AbstractSequentialList i implementuje interfejsy List, Deque, Queue, które wewnętrznie używają podwójnie połączonej listy do przechowywania elementów danych. Na tym polega różnica między ArrayList a LinkedList.