Różnica między tablicową a wektorem

Różnica między tablicową a wektorem

ArrayList vs Vector

Wektor implementuje tablice, które mogą rosnąć/kurczyć się w czasie wykonywania, gdy niektóre elementy są dodawane lub usuwane z niego. Dostęp do jego elementów przy użyciu indeksu liczb całkowitych. Dwa pola - przyrost pojemności i pojemności, charakteryzuj zarządzanie magazynami wektorów. Wdraża cztery interfejsy:
* Lista
* Losowy dostęp
* KLONITALNY
* Serializowalne interfejsy

ArrayList, podobnie jak wektory, wdraża również cztery interfejsy. Znowu, podobnie jak wektory, jego rozmiar może się zmienić w czasie wykonywania. Ma również pole zwane pojemnością, którego rozmiar jest tak duży jak rozmiar listy arraylist.

Zarówno wektory, jak i arraylist są dobre do pobierania elementów z dowolnej pozycji, a także do wkładania lub usuwania elementów z końca klasy kontenera.
Z perspektywy API zarówno wektory, jak i tablica są bardzo podobne. Więc gdzie dokładnie leży różnica między nimi? Następujące punkty rzucą trochę światła w tej sprawie:

1. Synchronizacja: wektory są synchronizowane, ale arraylist nie jest. Jeśli dodasz lub usuniesz elementy z tablicy, jest ono określane jako modyfikacja strukturalna. Gdy wiele wątków uzyskuje dostęp do ArrayList jednocześnie z blokiem kodu modyfikującym listę, wówczas należy zsynchronizować listę zewnętrzną. Krótko mówiąc, zawartość wektorowa jest bezpieczna dla wątków, podczas gdy ArrayList nie. Jeśli wymaganie nie wspomina o kolekcji bezpiecznej wątroby, należy wybrać ArrayList jako wydajność synchronizacji. Niesynchronizowane listy tablicy są szybkie.

2. Wzrost danych: zarówno elementy ArrayList, jak i wektorowe są przechowywane jako tablice, ale wektory mają domyślny rozmiar 10, a ArrayList nie ma rozmiaru domyślnego. Gdy dodaje się element do arraylist lub wektora, istnieje szansa, że ​​w każdej klasie może skończyć pokój. W takim przypadku domyślnie wektor podwaja swój rozmiar, podczas gdy wielkość tablicy wzrasta o 50%. Możesz ustawić wartość przyrostową w przypadku wektorów, które nie są możliwe dla tablicy.

3. Przemierzanie elementów: ArrayList ma tutaj przewagę, ponieważ możesz uzyskać dostęp do jego elementów za pomocą indeksu. W przypadku wektorów musisz utworzyć iterator, aby przemierzać jego elementy.

Streszczenie:

1.Jeśli klasa kontenera ma zostać modyfikowana przez pojedynczy wątek lub jakąś zmienną lokalną, powinieneś użyć arrayList.
2.Gdy do klasy kontenera jest dostępny przez wiele wątków, użyj wektorów, w przeciwnym razie będziesz musiał wykonać ręczną synchronizację.
3.Możemy określić rozmiar przyrostu wektorze i tablice, której nie możemy.
4.Wektor jest synchronizowany, a arraylist nie jest.
5.Wektor może zwiększyć rozmiar podwójnie; ArrayList może go zwiększyć o 50%.