Zalecane, 2024

Wybór Redakcji

Różnica między listą i tablicą ArrayList w Javie

List i ArrayList są członkami struktury Collection. Lista jest zbiorem elementów w sekwencji, w której każdy element jest obiektem, a elementy są dostępne przez tam pozycję (indeks). ArrayList tworzy dynamiczną tablicę obiektów, która w razie potrzeby zwiększa lub zmniejsza rozmiar. Podstawową różnicą między Listami i ArrayList jest to, że List jest interfejsem, a ArrayList jest klasą. Przeanalizujmy różnicę między Listą i ArrayList przy pomocy tabeli porównawczej pokazanej poniżej.

Wykres porównania

Podstawa do porównaniaListaArrayList
PodstawowyLista to interfejsArrayList to standardowa klasa kolekcji.
Składnialista interfejsówklasa ArrayList
Wydłuż / implementujInterfejs listy rozszerza strukturę kolekcji.ArrayList rozszerza AbstractList i implementuje List Interface.
Przestrzeń nazwSystem.Collections.Generic.System.Collections.
PracaSłuży do tworzenia listy elementów (obiektów), które są powiązane z ich numerami indeksu.ArrayList służy do tworzenia dynamicznej tablicy zawierającej obiekty.

Definicja listy

List to interfejs rozszerzający strukturę Collection . Interfejs listy opisuje kolekcję elementów, które są ułożone sekwencyjnie. Interfejs listy jest implementowany przez następujące standardowe klasy kolekcji, takie jak ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . Interfejs listy zawiera elementy powiązane z ich numerami indeksu. Możesz uzyskać dostęp do elementu na liście według jego pozycji (indeksu) na liście. Lista utworzona przy użyciu interfejsu List rozpoczyna się od indeksu opartego na zera.

Oprócz metod dziedziczonych przez strukturę Collection, interfejs List definiuje także pewną własną metodę. Metody dodane przez interfejs List to: dodaj (int, E) i addAll (int, Collection) . Te metody dodają element do listy według ich indeksu. Metody znajdujące się na liście mogą generować wyjątek, taki jak UnsupportedOperationException, jeśli metoda nie może zmodyfikować listy. Gdy jeden obiekt na liście jest niekompatybilny z innym obiektem na liście, zostanie zgłoszony wyjątek ClassCastException. Elementy Null nie są dozwolone na liście, jeśli spróbujesz wstawić obiekt o wartości NULL na listę, generowany jest wyjątek NullPointerException .

Możesz uzyskać element z listy za pomocą metody get () . Możesz ustawić wartość elementu na liście za pomocą metody set () . Możesz również uzyskać listę podrzędną z listy za pomocą metody podlista () . Wygodne staje się operowanie na podlistie zamiast na liście.

Definicja ArrayList

Jedną ze standardowych klas kolekcji jest ArrayList, która rozszerza klasę AbstractList, a także implementuje interfejs List . Klasa ArrayList służy do tworzenia dynamicznych tablic, które rosną i zmniejszają się w miarę potrzeb. Lista utworzona przy użyciu klasy ArrayList to nic innego jak tablica obiektów. W Javie standardowa tablica ma stałą długość, więc musisz wcześniej znać rozmiar tablicy. Ale może się zdarzyć, że możesz nie wiedzieć, jakiej długości tablicy potrzebujesz do czasu wykonywania. W związku z tym w ramach Kolekcji wprowadzono klasę ArrayList, aby rozwiązać ten problem.

ArrayList ma konstruktory, które tworzą macierz z własną wydajnością. Chociaż pojemność obiektu klasy ArrayList zwiększa się automatycznie po dodaniu elementów do tablicy, nadal można ręcznie zwiększyć pojemność obiektu ArrayList za pomocą metody ensureCapacity () . Lepiej jest początkowo zwiększać pojemność macierzy zamiast ponownie przydzielać pamięć później. Ponieważ realokacja jest droższa niż przydzielanie pamięci na raz.

Kluczowe różnice między listą i tablicą ArrayList

  1. Jedną z najważniejszych różnic między Listami i ArrayList jest to, że lista jest interfejsem, a ArrayList jest standardową klasą kolekcji.
  2. Interfejs listy rozszerza strukturę kolekcji, podczas gdy ArrayList rozszerza klasę AbstractList i implementuje interfejsy List .
  3. Przestrzeń nazw interfejsu List to System.Collection.Generic, natomiast przestrzeń nazw dla ArrayList to System.Collection .
  4. Interfejs listy tworzy kolekcję elementów, które są przechowywane w sekwencji i są identyfikowane lub dostępne przez ich numer indeksu. Z drugiej strony, ArrayList tworzy tablicę obiektów, gdzie tablica może dynamicznie rosnąć, gdy jest to wymagane.

Wniosek:

ArrayList przezwycięża problem statycznej tablicy w standardowej Javie, tj. Tablica nie może się powiększyć po jej utworzeniu. Kiedy tablica jest tworzona za pomocą tablicy ArrayList, tworzona jest tablica dynamiczna, która może rosnąć i zmniejszać się w razie potrzeby. Standardowa klasa kolekcji ArrayList rozszerza interfejs listy.

Top