Różnica między ArrayList i Vector w Javie

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 1 Móc 2024
Anonim
Różnica między ArrayList i Vector w Javie - Technologia
Różnica między ArrayList i Vector w Javie - Technologia

Zawartość


ArrayList i Vector są klasami w hierarchii Framework Collection. Zarówno ArrayList, jak i Vector są używane do tworzenia dynamicznej tablicy obiektów, w których tablica może się zwiększać w miarę potrzeb. Istnieją dwie podstawowe różnice, które odróżniają ArrayList i Vector, to że Vector należy do klas Legacy, które zostały później przeprojektowane w celu obsługi klas kolekcji, podczas gdy ArrayList jest standardową klasą kolekcji. Inną ważną różnicą jest to, że ArrayList nie jest zsynchronizowany; Wektor jest zsynchronizowany.

Przeanalizujmy inne różnice za pomocą Tabeli porównawczej pokazanej poniżej.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Podobieństwa
  5. Wniosek

Wykres porównania

Podstawa do porównaniaArrayListWektor
PodstawowyKlasa ArrayList nie jest zsynchronizowana.Klasa wektorowa jest zsynchronizowana.
Starsza klasaArrayList to standardowa klasa Collection.Vector to starsza klasa, przeprojektowana pod kątem obsługi klasy kolekcji.
Deklaracja klasyklasa ArrayListklasa wektor
RealokacjaJeśli nie jest określony, ArrayList jest zwiększany o połowę.Jeśli nie jest określony, wektor jest zwiększany w celu podwojenia jego rozmiaru.
WydajnośćPonieważ ArrayList jest niezsynchronizowany, działa szybciej niż Vector.Ponieważ Vector jest zsynchronizowany, działa wolniej niż ArrayList.
Wyliczenie / IteratorArrayList używa interfejsu Iterator do przechodzenia przez obiekty przechowywane w ArrayList.Wektor wykorzystuje wyliczenie, a także interfejs Iteratora do przechodzenia przez obiekty przechowywane w wektorach.


Definicja ArrayList

ArrayList należy do listy standardowych klas kolekcji. Klasa ArrayList jest zdefiniowana wewnątrz java.util pakiet rozszerza AbstractList klasa, która jest również standardową klasą kolekcji, a także implementuje Lista, interfejs zdefiniowany w interfejsach kolekcji. W Javie standardowa tablica ma zawsze stałą długość. To oznacza raz utworzony; nie rośnie dynamicznie ani nie kurczy się. Dlatego powinieneś mieć wcześniejszą wiedzę na temat długości używanej tablicy. Ale czasami może się zdarzyć, że wymagana długość zostanie ujawniona w czasie wykonywania, więc aby poradzić sobie z taką sytuacją, java wprowadziła ArrayList.

ArrayList to klasa używana do dynamicznego tworzenia tablicy, która przechowuje odwołania do obiektów. Rozmiar tej tablicy może rosnąć w miarę potrzeb. Deklaracja klasy jest następująca:

klasa ArrayList

Tutaj E określa typ obiektów, które będzie przechowywać tablica. Utworzona tablica ma zmienną długość i zwiększa się i zmniejsza, gdy obiekty są dodawane lub usuwane z listy.


ArrayList nie jest zsynchronizowany, co oznacza, że ​​więcej niż jeden wątek może działać na tablicy jednocześnie. Na przykład, jeśli jeden wątek dodaje odwołanie do obiektu do tablicy, a inny wątek usuwa jednocześnie odwołanie do obiektu z tej samej tablicy. Tworzenie tablicy dynamicznej przy użyciu klasy ArrayList:

ArrayList S1 = nowa ArrayList(); System.out.ln („Początkowy rozmiar S1:” + S1.size ()); S1.add („T”); S1.add („C”); S1.add („H”); S1.add (1, „E”); System.out.ln („Po dodaniu S1 zawiera:” + S1); System.out.ln („Rozmiar S1 po dodaniu:” + S1.size ()); S1.remove („T”); S1. Usunąć (2); System.out.ln („Po usunięciu S1 zawiera:” + S1); System.out.ln („Rozmiar S1 po usunięciu:” + S1.size ()); // OutputInitial size of S1: 0 Po dodaniu S1 zawiera:; Rozmiar S1 po dodaniu: 4 Po usunięciu S1 zawiera: Rozmiar S1 po usunięciu: 2

W powyższym kodzie widać to; Stworzyłem tablicę obiektów typu string. Dodałem niektóre obiekty do tablicy S1 za pomocą metody add (), a później usunąłem niektóre obiekty za pomocą metody remove (). Możesz zaobserwować, że jeśli nie określisz początkowego rozmiaru tablicy, będzie ona miała długość „0”. Jak widać, tablica powiększa się i zmniejsza w miarę dodawania i usuwania elementów.

Definicja wektora

Vector jest klasą Legacy, która została przeprojektowana w celu obsługi klasy kolekcji w hierarchii Framework Framework. Klasa wektora jest również zdefiniowana w java.util pakiet rozszerzony o AbstractList klasa i zaimplementowane przez Lista berło. Klasa Vector jest zadeklarowana następująco:

klasa wektor

Tutaj E określa typ obiektu, który będzie przechowywany w tablicy. Tablica utworzona za pomocą klasy Vector ma zmienną długość. Zwiększa dwukrotnie swój rozmiar, jeśli przyrost nie jest określony. Przyjrzyjmy się tworzeniu tablicy za pomocą Vector.

Wektor V = nowy wektor(1,1); V.addElement („Tech”); V.addElement („Różnice”); System.out.ln („Pojemność po dodaniu 2:” + V. pojemność ()); V.addElement („pomiędzy”); V.addElement („wektory”); System.out.ln („Bieżąca pojemność:” + V. pojemność ()); // Moc wyjściowa po 2 dodaniach: 2 Pojemność prądowa: 4

W powyższym kodzie widać, że szczególnie wspomniałem odpowiednio wielkość i wartość przyrostu w konstruktorze Vector, jednocześnie deklarując tablicę obiektów łańcuchowych. W związku z tym można zauważyć, że po zakończeniu limitu tablica zwiększa się o wartość podaną konstruktorowi podczas deklaracji.

  1. Wiele wątków może działać jednocześnie na ArrayList, dlatego jest to brane pod uwagę niezsynchronizowane. W przeciwieństwie do ArrayList, tylko jeden wątek może działać jednocześnie na wektorze; stąd się nazywa Zsynchronizowane.
  2. We wczesnej wersji Javy niektóre klasy i interfejsy zapewniałyby metody przechowywania obiektów, które nazywano klasami klasycznymi. Wektor jest jedną z klas klasycznych Java. Później te starsze klasy zostały przeprojektowane w celu obsługi klasy Collection, podczas gdy klasa ArrayList jest standardową klasą Collection.
  3. Gdy limit tablicy zostanie w pełni wykorzystany, a obok wyczerpanej tablicy zostanie dodany nowy obiekt, jego rozmiar rośnie zarówno w przypadkach, tj. W ArrayList, jak iw Vector, ale różnica polega na tym, że w ArrayList, jeśli nie określono rozmiaru jest zwiększany o 50% bieżącej tablicy, podczas gdy w tablicy Vector jest podwojony, jeśli wartość przyrostu nie jest określona.
  4. Wektor używa wyliczenia, a także iteratora do przechodzenia przez tablicę, podczas gdy ArrayList używa iteratora tylko do przechodzenia przez tablicę.
  5. Ponieważ ArrayList jest niezsynchronizowany i wiele wątków może na nim działać jednocześnie, jego wydajność jest lepsza niż Vector, na którym może działać tylko jeden wątek na raz.

Podobieństwa:

  1. Zarówno ArrayList, jak i Vector są zdefiniowane w pakiecie java.util.
  2. ArrayList i Vector rozszerzają klasę AbsractList.
  3. Zarówno ArrayList, jak i Vector implementują interfejs List.
  4. Zarówno ArrayList, jak i Vectors są używane do tworzenia dynamicznej tablicy, która rośnie w miarę potrzeb.
  5. Zarówno ArrayList, jak i Vector przechowują odwołania do obiektów.

Wniosek:

Kończę stwierdzeniem, że użycie ArrayList jest lepsze niż użycie Vector, ponieważ działa on coraz szybciej.