Różnica między tablicą a wektorem

Różnica między tablicą a wektorem
Różnica między tablicą a wektorem

Wideo: Różnica między tablicą a wektorem

Wideo: Różnica między tablicą a wektorem
Wideo: Pointer and Array Differences Explained In 2 Minutes 2024, Lipiec
Anonim

Lista tablic a wektor

Lista tablic może być postrzegana jako tablica dynamiczna, która może rosnąć. Z tego powodu programista nie musi znać rozmiaru tablicy arraylist podczas jej definiowania. Wektor może być również postrzegany jako tablica, która może się powiększać. Wektory można łatwo alokować i można ich używać, gdy wymagany rozmiar pamięci nie jest znany do czasu uruchomienia.

Co to jest lista tablic?

Lista tablic może być postrzegana jako tablica dynamiczna, która może rosnąć. Dlatego arraylists są idealne do użycia w sytuacji, gdy nie znasz rozmiaru elementów wymaganych w momencie deklaracji. W Javie tablice tablic mogą zawierać 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 typy pierwotne). Generalnie tablice tablic są dostarczane z metodami do 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 po tablicach tablic można przeszukiwać 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 są częścią Java Collections Framework.

Co to jest wektor?

Wektor to także tablica, która może się powiększać. Wektory można łatwo alokować i można ich używać, gdy wymagany rozmiar pamięci masowej nie jest znany do czasu uruchomienia. Wektory mogą również zawierać 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 jak w przypadku arraylist w javie, wektory można przemierzać 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 arraylists, jak i vectors są bardzo podobne do dynamicznych tablic, które mogą rosnąć, mają pewne istotne różnice. Główną różnicą między arraylists a wektorami jest to, że wektory są zsynchronizowane, podczas gdy arraylists są niezsynchronizowane. Dlatego używanie tablic tablic w środowiskach wielowątkowych nie będzie odpowiednie, podczas gdy wektory mogą być bezpiecznie używane w środowiskach wielowątkowych (ponieważ są bezpieczne wątkowo). 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 arraylists, jak i vectors używają tablic do przechowywania obiektów. Gdy bieżąca przestrzeń nie jest wystarczająca, wektory podwoją rozmiar swojej tablicy wewnętrznej, podczas gdy arraylists zwiększają rozmiar swojej tablicy wewnętrznej o 50%. Jednak w przypadku używania zarówno list arraylist, jak i vectors, dając odpowiednią pojemność początkową, można uniknąć niepotrzebnej zmiany rozmiaru tablicy wewnętrznej. 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.

Zalecana: