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 miarę potrzeb. 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ą przechowywać, aktualizować, pobierać zestaw elementów. Pomaga w pracy ze strukturami danych, takimi jak listy, zbiory, drzewa i mapy. Lista jest interfejsem frameworka Collection. 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 wykorzystuje dynamiczną tablicę 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.
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 stały. Obiekt utworzony przy użyciu klasy ArrayList może przechowywać zestaw elementów na liście. Pojemność zwiększa się automatycznie, dzięki czemu programista może dodawać elementy do listy. Klasa ArrayList rozszerza klasę 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. Za pomocą 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 listy za pomocą pętli for zostaną wydrukowane litery A, B, C i D.
Co to jest połączona lista?
Podobnie do ArrayList, LinkedList służy do dynamicznego przechowywania elementów danych. Obiekt utworzony przy użyciu klasy LinkedList może przechowywać zestaw elementów na liście. Pojemność zwiększa się automatycznie, dzięki czemu programista może dodawać elementy do listy. Wewnętrznie wykorzystuje podwójnie połączoną listę 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 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. Za pomocą 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. Przy przekazywaniu 4 do metody usuwania, litera w czwartym indeksie, czyli „E”, jest usuwana z listy. Podczas iteracji za pomocą pętli for zostaną wydrukowane litery A, B, C i D.
Jakie są podobieństwa między ArrayList a 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 zachowują kolejność wstawiania.
Jaka jest różnica między ArrayList a LinkedList?
ArrayList vs LinkedList |
|
ArrayList to klasa, która rozszerza AbstractList i implementuje interfejs List, który wewnętrznie używa dynamicznej tablicy 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ż do LinkedList. | Dostęp do elementów LinkedList jest wolniejszy niż do ArrayList. |
Manipulowanie elementami | |
Manipulowanie elementami ArrayList jest wolniejsze niż w przypadku LinkedList. | Manipulowanie elementami w 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. To jest różnica między ArrayList i LinkedList.