Arraylist vs Vector
Arraylistę można postrzegać jako tablicę dynamiczną, która może rosnąć. Z tego powodu programista nie musi znać wielkości tablicy arraylist, gdy ją definiuje. Wektor można również postrzegać jako tablicę, która może rosnąć. Wektory można łatwo przydzielić i wykorzystać, gdy wymagany rozmiar pamięci nie jest znany do czasu uruchomienia.
Co to jest Arraylist?
Arraylistę można postrzegać jako tablicę dynamiczną, która może rosnąć. Dlatego arraylisty idealnie nadają się do użycia w sytuacji, gdy nie znasz wielkości elementów wymaganych w momencie deklaracji. W Javie arraylisty mogą przechowywać tylko obiekty, nie mogą bezpośrednio przechowywać typów pierwotnych (możesz umieścić typy pierwotne wewnątrz obiektu lub użyć klas opakowań typów pierwotnych). Ogólnie rzecz biorąc, arraylists są wyposażone w metody przeprowadzania wstawiania, usuwania i wyszukiwania. Złożoność czasowa dostępu do elementu wynosi o (1), natomiast wstawianie i usuwanie ma złożoność czasową o (n). W Javie tablice arraylerów można przeglądać za pomocą pętli foreach, iteratorów lub po prostu za pomocą indeksów. W Javie arraylists wprowadzono od wersji 1.2 i jest on częścią Java Collections Framework.
Co to jest wektor?
Wektor to także tablica, która może rosnąć. Wektory można łatwo przydzielić i wykorzystać, gdy wymagany rozmiar pamięci nie jest znany aż do czasu uruchomienia. Wektory mogą również przechowywać tylko obiekty i nie mogą zawierać typów pierwotnych. Wektory są zsynchronizowane, dlatego mogą być bezpiecznie używane w środowiskach wielowątkowych. Wektory są wyposażone w metody dodawania obiektów, usuwania obiektów i wyszukiwania obiektów. Podobnie do arraylist w Javie, wektory można przenosić za pomocą pętli foreach, iteratorów lub po prostu za pomocą indeksów. Jeśli chodzi o Javę, wektory są dołączane od pierwszej wersji Java.
Jaka jest różnica między Arraylist a Vector?
Mimo że zarówno tablice, jak i wektory są bardzo podobne do tablic dynamicznych, które mogą rosnąć, mają pewne istotne różnice. Główną różnicą między zestawami a wektorami jest to, że wektory są zsynchronizowane, podczas gdy zestawy są zsynchronizowane. Dlatego używanie tabel arraylowych w środowiskach wielowątkowych nie będzie odpowiednie, podczas gdy wektory mogą być bezpiecznie używane w środowiskach wielowątkowych (ponieważ są bezpieczne dla wątków). Ale synchronizacja wektorów spowodowałaby zmniejszenie wydajności. Dlatego nie byłoby dobrym pomysłem stosowanie wektorów w środowisku z jednym wątkiem. Wewnętrznie zarówno tablice, jak i wektory używają tablic do przechowywania obiektów. Gdy bieżąca przestrzeń nie jest wystarczająca, wektory podwoją rozmiar swojej wewnętrznej tablicy, podczas gdy listy arraylistów zwiększają rozmiar wewnętrznej tablicy o 50%. Ale przy użyciu zarówno list arraylistycznych, jak i wektorów, poprzez zapewnienie odpowiedniej początkowej pojemności, można uniknąć niepotrzebnego zmiany rozmiaru tablicy wewnętrznej. W sytuacji, gdy znana jest szybkość wzrostu danych, bardziej odpowiednie byłoby zastosowanie wektorów, ponieważ można by określić wartość przyrostową wektorów.