Różnice między Array a ArrayList

Array i ArrayList to ważne struktury danych, które są używane do przechowywania wielu elementów i ich przetwarzania. Ale są między nimi kluczowe różnice. Dobry programista musi zdawać sobie sprawę z porównań między nimi, aby mógł efektywnie decydować o tym, czego użyć, kiedy i dlaczego.

Szyk

Tablica jest strukturą danych, w której możemy przechowywać elementy o danym rozmiarze podobnego typu. Na przykład tablica typu liczba całkowita, tablica typu ciąg itp. Dlatego normalna tablica w Javie jest statyczną strukturą danych.

ArrayList

ArrayList to dynamiczna struktura danych, w której elementy można dodawać i usuwać z listy. Jeśli więc nie jesteś pewien, ile elementów będzie w twojej tablicy, ta dynamiczna struktura danych cię uratuje.

W tym artykule omówimy różnice między Array i ArrayList w Javie.

Przykład zrozumienia zarówno Array, jak i ArrayList

Tablica jest strukturą danych, w której możemy przechowywać elementy o ustalonym rozmiarze podobnego typu.

Przykład kodu:

Stwórzmy tablicę pięciu elementów typu int. Będziemy je powtarzać za pomocą pętli for

ArrayList to dynamiczna struktura danych, w której elementy można dodawać i usuwać z listy. Jeśli więc nie jesteś pewien, ile elementów będzie w twojej tablicy, ta dynamiczna struktura danych cię uratuje.

Przykład kodu:

Różnice między Array a ArrayList (infografiki)

Poniżej podano najważniejsze różnice między Array i ArrayList:

Kluczowe różnice między Array i ArrayList w Javie

1. Elastyczność

Tablica jest statyczną strukturą danych. Po zdefiniowaniu rozmiaru tablicy nie można zmienić wartości jej rozmiaru. Dlatego normalna tablica w Javie jest statyczną strukturą danych, ponieważ początkowy rozmiar tablicy jest ustalony.

Z drugiej strony ArrayList ma elastyczny rozmiar. Możesz dodawać lub usuwać elementy z listy według własnego uznania. Podczas usuwania elementów z ArrayList przypisujemy null do indeksu, którego wartość jest usuwana, a cała wartość indeksu jest automatycznie obniżana o jeden. Podobne idzie również do dodania.

2. Wdrożenie

Tablica to struktura danych, w której możemy przechowywać elementy o ustalonym rozmiarze podobnego typu. ArrayList to dynamiczna struktura danych, w której elementy można dodawać i usuwać z listy. W rzeczywistości ArrayList jest implementowany za pomocą tablicy w Javie. Musisz zaimportować pakiet java.util.ArrayList, aby użyć metody ArrayList () do utworzenia obiektu ArrayList.

Przykładowy fragment kodu Array

Przykładowy kod Snippet z ArrayList

3. Wydajność

Chociaż ArrayList jest w zasadzie oparty na Array, widzimy między nimi różnice w wydajności. Wynika to z rodzaju pamięci i funkcjonalności ArrayList. Widzimy różnice w wydajności pod względem czasu procesora i wykorzystania pamięci. W zależności od wykonywanych operacji wydajność Array i ArrayList będzie się różnić:

ArrayList wymaga więcej pamięci do celów przechowywania w porównaniu do tablicy. Jest tak, ponieważ przechowywanie podobnych obiektów wymaga więcej pamięci niż przechowywanie podobnych zmiennych typu pierwotnego.

Operacja resize (): ArrayList używa automatycznej zmiany rozmiaru, w której tworzona jest tymczasowa tablica do kopiowania elementów ze starej tablicy do nowej. Spowalnia to ogólną wydajność.

Operacja get (): W przypadku dostępu indeksowego zarówno ArrayList, jak i tablica mają taką samą wydajność, ponieważ wymaga to stałego czasu.

operacja add (): Widzimy tutaj kluczową różnicę, ponieważ dodanie nowego elementu w ArrayList wymaga dwóch wewnętrznych operacji: kopiowania i zmiany rozmiaru. Dodanie w ArrayList tworzy nową tablicę w tle i kopiuje elementy ze starej do nowej tablicy.

4. Prymitywy

Tablica może przechowywać zarówno prymitywne, jak i obiektowe typy elementów. Z drugiej strony ArrayList nie może przechowywać typów pierwotnych; może przechowywać tylko obiekty tego samego typu.

W jaki sposób możemy przechowywać wartości całkowite w ArrayList?

Odpowiedzią jest zdolność JVM do autoboxowania . Autoboxing wewnętrznie przekształca operację pierwotną w jej równoważne obiekty.

Na przykład:

Dlatego wewnętrznie autoboxing działa poniżej rzeczy

5. Wpisz Bezpieczeństwo

Tablica może przechowywać tylko elementy podobnego typu. Jeśli chcesz przechowywać różne typy elementów w tablicy inne niż określone, wygeneruje wyjątek ArrayStoreException podczas tworzenia obiektu tej tablicy. Ten wyjątek zostanie zgłoszony w czasie wykonywania, ponieważ tablica nie jest bezpieczna dla typu; dla tablicy nie ma sprawdzania czasu kompilacji.

Na przykład:

Z drugiej strony ArrayList jest bezpieczny dla typu, ponieważ zapewnia bezpieczeństwo typu przez generyczne. Generics pozwala kompilatorowi sprawdzić, czy podczas kompilacji występuje niezgodność typu.

6. Iterowanie wartości

ArrayList używa metody iterator () do utworzenia kolekcji. Następnie za pomocą pętli while przejdziemy kolejno elementy i wydrukujemy wartości.

Z drugiej strony możemy użyć pętli lub każdej pętli do iteracji przez tablicę.

7. Długość

W wielu przypadkach użycia może być konieczne uzyskanie rozmiaru całej tablicy. W przypadku Arraylist obliczenia te są dość proste. Możemy uzyskać długość ArrayList za pomocą metody size ().

Z drugiej strony każdy obiekt tablicy ma zmienną length, która zwraca długość tablicy.

Na przykład:

8. Dodawanie elementów

Dodawanie lub wstawianie jest możliwe w ArrayList, ponieważ jest to dynamiczna struktura danych. Możemy użyć metody add (), aby wstawić elementy do ArrayList po jej utworzeniu.

Z drugiej strony rozmiar tablicy jest stały. Możemy jednak wstawiać elementy do tablicy według przypisania. Nie możemy dynamicznie dodawać nowych elementów poza rozmiar tablicy.

Na przykład:

9. Wymiar

ArrayList jest jednowymiarowy. Natomiast tablica może być wielowymiarowa.

Na przykład:

Array and ArrayList - Tabela porównawcza

Omówmy najlepsze porównanie między Array i ArrayList

Podstawa porównaniaSzykArrayList
ElastycznośćTablica jest statyczną strukturą danychArrayList to dynamiczna struktura danych
Prymitywymoże przechowywać elementy pierwotne i obiektowemoże przechowywać tylko obiekty tego samego typu.
Wpisz BezpieczeństwoTablica może przechowywać tylko elementy podobnego typu. W przeciwnym razie zwróci ArrayStoreException podczas tworzenia obiektu tej tablicy.ArrayList jest bezpieczny dla typu, ponieważ zapewnia bezpieczeństwo typu przez generyczne.
Iterowanie wartościużyj dla pętli lub dla każdej pętli, aby uzyskać iterację.Używa metody iterator () do utworzenia kolekcji
Dodawanie elementówmoże wstawiać elementy w tablicy według przypisania.użyj metody add (), aby wstawić elementy do ArrayList

Wymiarwielowymiarowyjednowymiarowy

Podsumowanie-tablica vs ArrayList

To wszystko dotyczy ważnego rozróżnienia między tablicą a ArrayList w Javie. Najważniejszym rozróżnieniem, o którym należy pamiętać, jest to, że tablica jest statyczna, podczas gdy ArrayList ma charakter dynamiczny. Opierając się głównie na tym rozróżnieniu, musisz użyć tablicy, jeśli rozpoznajesz poprzedzające wymiary, jeśli nie masz pewności, po prostu użyj ArrayList.

Polecane artykuły

Jest to przewodnik po Array vs. ArrayList. Tutaj omawiamy kluczowe różnice między Array a ArrayList z infografikami, przykładami i tabelą porównawczą. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Java Vector vs ArrayList
  2. C # Array vs List
  3. C vs Java
  4. Zalety macierzy
  5. Iterator w Javie
  6. Korzyści z pętli Python | Przykład