Różnica między tablicową a wektorem
- 1924
- 56
- Pelagia Radomski
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%.
- « Różnica między Dropbox a Dyskiem Google
- Różnica między fermentacją alkoholu a fermentacją kwasu mlekowego »