Różnica między ArrayList i Vector w Javie
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.
- Wykres porównania
- Definicja
- Kluczowe różnice
- Podobieństwa
- Wniosek
Wykres porównania
Podstawa do porównania | ArrayList | Wektor |
---|---|---|
Podstawowy | Klasa ArrayList nie jest zsynchronizowana. | Klasa wektorowa jest zsynchronizowana. |
Starsza klasa | ArrayList to standardowa klasa Collection. | Vector to starsza klasa, przeprojektowana pod kątem obsługi klasy kolekcji. |
Deklaracja klasy | klasa ArrayList | klasa wektor |
Realokacja | Jeś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 / Iterator | ArrayList 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 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. 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 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. Kończę stwierdzeniem, że użycie ArrayList jest lepsze niż użycie Vector, ponieważ działa on coraz szybciej.
Definicja wektora
Podobieństwa:
Wniosek: