Arraylist vs Vector
Arraylist może być postrzegany jako dynamiczna tablica, której rozmiar może się zwiększać. Z tego powodu programista nie musi znać rozmiaru tablicy arraylisty, kiedy ją definiuje. Wektor można również postrzegać jako tablicę, która może rosnąć. Wektory można łatwo alokować i używać, gdy wymagany rozmiar pamięci nie jest znany przed uruchomieniem.
Kim jest Arraylist?
Tablicę arraylistyczną można postrzegać jako tablicę dynamiczną, której rozmiar może się zwiększać. Dlatego arraylists są idealne do wykorzystania w sytuacji, gdy nie znasz rozmiaru elementów wymaganych w momencie deklaracji. W Javie arraylisty mogą przechowywać tylko obiekty, nie mogą bezpośrednio przechowywać typów pierwotnych (można umieścić typy pierwotne wewnątrz obiektu lub użyć klas opakowujących typów pierwotnych). Na ogół arraylisty są wyposażone w metody wykonywania wstawiania, usuwania i wyszukiwania. Złożoność czasowa dostępu do elementu wynosi o (1), podczas gdy wstawianie i usuwanie ma złożoność czasową o (n). W Javie arraylists można przechodzić za pomocą pętli foreach, iteratorów lub po prostu za pomocą indeksów. W Javie arraylists zostały wprowadzone od wersji 1.2 i jest częścią Java Collections Framework.
Co to jest wektor?
Wektor to także tablica, która może rosnąć. Wektory można łatwo alokować i używać, gdy wymagany rozmiar pamięci nie jest znany do czasu uruchomienia. Wektory mogą również zawierać tylko obiekty i nie mogą zawierać typów pierwotnych. Wektory są zsynchronizowane, dzięki czemu 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 jak arraylist w java, wektory można przechodzić za pomocą pętli foreach, iteratorów lub po prostu za pomocą indeksów. Jeśli chodzi o Javę, wektory zostały uwzględnione od pierwszej wersji Javy.
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łówna różnica między listami array a wektorami polega na tym, że wektory są zsynchronizowane, podczas gdy listy arraylistów są niezsynchronizowane. Dlatego używanie list arraylist w środowiskach wielowątkowych nie będzie odpowiednie, a wektorów można bezpiecznie używać w środowiskach wielowątkowych (ponieważ są one bezpieczne dla wątków). Ale synchronizacja w wektorach spowodowałaby zmniejszenie wydajności. Dlatego nie byłoby dobrym pomysłem używanie wektorów w środowisku jednowątkowym. Wewnętrznie zarówno tablice, jak i wektory używają tablic do przechowywania obiektów. Gdy obecna przestrzeń nie jest wystarczająca, wektory podwoją rozmiar swojej wewnętrznej tablicy, podczas gdy arraylisty zwiększą rozmiar swojej wewnętrznej tablicy o 50%. Ale używając zarówno list arraylist, jak i wektorów, dając odpowiednią początkową pojemność, można uniknąć niepotrzebnej zmiany rozmiaru wewnętrznej tablicy. W sytuacji, gdy znane jest tempo wzrostu danych, bardziej odpowiednie byłoby użycie wektorów, ponieważ można by określić przyrostową wartość wektorów.