Różnica między List a ArrayList w Javie
Zawartość
List i ArrayList są członkami frameworku Collection. Lista jest zbiorem elementów w sekwencji, w której każdy element jest obiektem, a do elementów można uzyskać dostęp przez pozycję (indeks). ArrayList tworzy dynamiczną tablicę obiektów, która zwiększa lub zmniejsza rozmiar w razie potrzeby. Podstawowa różnica między List a ArrayList jest taka Lista jest interfejsem i ArrayList jest klasą. Przeanalizujmy różnicę między List a ArrayList za pomocą tabeli porównawczej pokazanej poniżej.
- Wykres porównania
- Definicja
- Kluczowe różnice
- Wniosek
Wykres porównania
Podstawa do porównania | Lista | ArrayList |
---|---|---|
Podstawowy | Lista jest interfejsem | ArrayList to standardowa klasa kolekcji. |
Składnia | lista interfejsów | klasa ArrayList |
Rozszerzenie / wdrożenie | Interfejs listy rozszerza Framework Collection. | ArrayList rozszerza AbstractList i implementuje interfejs list. |
Przestrzeń nazw | System.Collections.Generic. | System.Collections. |
Praca | Sł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
Lista jest berło który rozszerza Kolekcja struktura. Interfejs listy opisuje kolekcję elementów ułożonych kolejno. Interfejs listy jest implementowany przez następujące standardowe klasy kolekcji, takie jak ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack. Interfejs listy ma 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 za pomocą interfejsu List zaczyna się od indeksu zerowego.
Oprócz metod dziedziczonych przez Framework kolekcji interfejs List definiuje również własną metodę. Metody dodane przez interfejs listy 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ą zgłaszać wyjątek, taki jak UnsupportedOperationException jeśli metoda nie może zmodyfikować listy. Jeśli jeden obiekt na liście jest niezgodny z innym obiektem na liście, wówczas ClassCastException jest wyrzucany. Elementy zerowe nie są dozwolone na liście, jeśli spróbujesz wstawić na liście obiekt zerowy, NullPointerException Jest rzucony.
Możesz uzyskać element z listy za pomocą otrzymać() metoda. Możesz ustawić wartość elementu na liście za pomocą zestaw() metoda. Możesz także pobrać listę podrzędną z listy za pomocą metody sublist (). Wygodne staje się działanie na liście podrzędnej zamiast na liście.
Definicja ArrayList
Jedną ze standardowych klas Collection jest ArrayList, która się rozszerza AbstractList klasy, a także implementuje Lista berło. Klasa ArrayList służy do tworzenia dynamicznych tablic, które rosną i zmniejszają się w razie potrzeby. Lista utworzona za pomocą klasy ArrayList to nic innego jak tablica obiektów. W Javie standardowa tablica ma ustaloną długość, dlatego należy wcześniej znać jej rozmiar. Ale może się zdarzyć, że do czasu uruchomienia możesz nie wiedzieć, jakiej długości macierzy potrzebujesz. Dlatego w ramach Collection wprowadzono klasę ArrayList, aby rozwiązać ten problem.
ArrayList ma konstruktory, które tworzą tablicę z jej pierwotną pojemnością. Chociaż pojemność obiektu klasy ArrayList zwiększa się automatycznie, gdy elementy są dodawane do tablicy, nadal można ręcznie zwiększyć pojemność obiektu ArrayList przy użyciu metody zapewnićCapacity (). Lepiej jest początkowo zwiększyć pojemność tablicy zamiast późniejszego ponownego przydzielania pamięci. Ponieważ ponowna alokacja jest droższa niż jednorazowe przydzielanie pamięci.
- Jedną z najważniejszych różnic między List a ArrayList jest to, że lista jest an berło i ArrayList to standardowa kolekcja klasa.
- Interfejs listy rozszerza Kolekcja ramy, podczas gdy ArrayList się rozszerza AbstractList Klasa i implementuje Lista interfejsy.
- Przestrzeń nazw dla interfejsu listy to System.Collection.Generic natomiast przestrzeń nazw dla ArrayList to System.Collection.
- Interfejs listy tworzy zbiór elementów, które są przechowywane w sekwencji i są identyfikowane lub dostępne według ich numeru indeksu. Z drugiej strony ArrayList tworzy tablicę obiektów, w której tablica może dynamicznie rosnąć w razie potrzeby.
Wniosek:
ArrayList rozwiązuje problem statycznej tablicy w standardowej Javie, tzn. Tablica nie może się powiększyć po utworzeniu. Gdy tablica jest tworzona za pomocą ArrayList, tworzona jest tablica dynamiczna, która może się powiększać i zmniejszać w razie potrzeby. Standardowa klasa Collection ArrayList rozszerza interfejs List.