Różnica między Array i ArrayList

Co to jest Array i ArrayList?

Zarówno Array, jak i ArrayList to oparte na indeksach struktury danych, które są często używane w programach Java. Pod względem koncepcyjnym ArrayList jest wewnętrznie wspierany przez tablice, jednak zrozumienie różnicy między nimi jest kluczem do zostania świetnym programistą Java. Jest to dość podstawowy krok na początek, szczególnie dla początkujących, którzy dopiero zaczęli kodować. Podczas gdy oba są używane do przechowywania elementów w Javie, które mogą być albo prymitywami, albo obiektami, mają swój sprawiedliwy udział w różnicach pod względem funkcjonalności i wydajności. Główną różnicą między nimi jest to, że Array jest statyczny, podczas gdy ArrayList ma charakter dynamiczny. W tym artykule porównano te dwa aspekty, abyś mógł wybrać jedno z nich.

Różnica między Array a Arraylist

  1. Możliwość zmiany rozmiaru

Jedną z głównych i zauważalnych różnic między dwiema strukturami danych jest to, że Array ma charakter statyczny, co oznacza, że ​​jest to typ danych o stałej długości, podczas gdy ArrayList ma charakter dynamiczny, co oznacza, że ​​jest to struktura danych o zmiennej długości. Z technicznego punktu widzenia długości Array nie można zmienić ani zmodyfikować po utworzeniu obiektu Array. Zawiera sekwencyjny zbiór elementów tego samego typu danych. Tablice w Javie działają inaczej niż działają w C / C ++. Z drugiej strony ArrayList może zmieniać rozmiar, a tablice mogą się powiększać w miarę potrzeb. Ponieważ jest to dynamiczna struktura danych, elementy można dodawać i usuwać z listy.

  1. Generics

Nie można tworzyć tablic klas ogólnych interfejsów w Javie, więc tablice i ogólne nie idą w parze, co uniemożliwia utworzenie ogólnej tablicy z tego jednego podstawowego powodu, dla którego tablice są kowariantne, podczas gdy ogólne są niezmienne. Podczas gdy tablica jest strukturą danych o stałej długości, zawiera obiekty tej samej klasy lub operacje podstawowe określonego typu danych. Więc jeśli spróbujesz zapisać inny typ danych niż ten określony podczas tworzenia obiektu Array, po prostu zgłasza „ArrayStoreException”. Z drugiej strony ArrayList obsługuje Generics, aby zapewnić bezpieczeństwo typu.

  1. Prymitywy

Prymitywne typy danych, takie jak int, double, long i char, nie są dozwolone w ArrayList. Raczej przechowuje obiekty, a prymitywy nie są uważane za obiekty w Javie. Z drugiej strony tablice mogą przechowywać zarówno elementy pierwotne, jak i obiekty w Javie, ponieważ jest to jedna z najbardziej wydajnych struktur danych w Javie do przechowywania obiektów. Jest to zagregowany typ danych zaprojektowany do przechowywania obiektów, które mogą być tego samego lub innego typu.

  1. Długość

Aby uzyskać długość macierzy, kod musi uzyskać dostęp do atrybutu długości, ponieważ trzeba znać długość, aby wykonywać operacje na macierzy. Podczas gdy ArrayList używa metody size () do określenia rozmiaru ArrayList, różni się ona raczej od określania długości ArrayList. Atrybut metody size () określa liczbę elementów w ArrayList, która z kolei jest pojemnością ArrayList.

Na przykład:

ArrayLengthTest klasy public

public static void main (String [] args)

ArrayList arrList = new ArrayList ();

String [] items = „One”, „Two”, „Three”;

for (String str: items)

arrList.add (str);

int size = items.size ();

System.out.println (rozmiar);

  1. Realizacja

Array jest rodzimym komponentem programistycznym w Javie, które są tworzone dynamicznie i używają operatora przypisania do przechowywania elementów, natomiast ArrayList używa atrybutu add () do wstawiania elementów. ArrayList to klasa z frameworka kolekcji w Javie, która używa zestawu określonych metod w celu uzyskania dostępu i modyfikacji elementów. Rozmiar ArrayList można dynamicznie zwiększać lub zmniejszać. Elementy tablicy są przechowywane w ciągłej lokalizacji w pamięci, a jej rozmiar pozostaje stały przez cały czas.

  1. Występ

Podczas gdy obie struktury danych zapewniają podobną wydajność, ponieważ tablica jest wspierana przez tablice, jedna ma przewagę nad drugą, głównie pod względem czasu procesora i zużycia pamięci. Powiedzmy, że jeśli znasz rozmiar tablicy, prawdopodobnie wybierzesz ArrayList. Jednak iteracja po tablicy jest nieco szybsza niż iteracja po tablicy ArrayList. Jeśli program obejmuje dużą liczbę prymitywów, tablica będzie działać znacznie lepiej niż ArrayList, zarówno pod względem czasu, jak i pamięci. Tablice to niskopoziomowy język programowania, którego można używać w implementacjach kolekcji. Jednak wydajność może się różnić w zależności od wykonywanej operacji.

Array vs. Arraylist

Szyk ArrayList
Array to struktura danych o stałej długości, której długości nie można modyfikować po utworzeniu obiektu tablicy. ArrayList ma charakter dynamiczny, co oznacza, że ​​może się zmieniać, aby rosnąć w razie potrzeby.
Rozmiar tablicy pozostaje statyczny w całym programie. Rozmiar ArrayList może dynamicznie rosnąć w zależności od obciążenia i pojemności.
Używa operatora przypisania do przechowywania elementów. Używa atrybutu add () do wstawiania elementów.
Może zawierać prymitywy, a także obiekty tego samego lub innego typu danych. Prymitywy nie są dozwolone w ArrayList. Może zawierać tylko typy obiektów.
Tablice i ogólne nie idą w parze. Ogólne są dozwolone w ArrayList.
Tablice mogą być wielowymiarowe. ArrayList jest jednowymiarowy.
Jest to natywny komponent programistyczny, w którym elementy są przechowywane w ciągłych lokalizacjach pamięci. Jest to klasa ze środowiska kolekcji Java, w której obiekty nigdy nie są przechowywane w ciągłych lokalizacjach.
Zmienna długość służy do określania długości tablicy. Metoda Size () służy do określania rozmiaru ArrayList.
Zajmuje mniej pamięci niż ArrayList do przechowywania określonych elementów lub obiektów. Zajmuje więcej pamięci niż tablica do przechowywania obiektów.
Iteracja po tablicy jest szybsza niż iteracja po ArrayList. Iteracja po ArrayList jest znacznie wolniejsza pod względem wydajności.

streszczenie

Chociaż niektórzy mogą myśleć, że implementacja tablic w programie może uzyskać wyniki szybciej niż robienie tego samego z ArrayLists z tego prostego powodu, że tablice są strukturą danych niskiego poziomu, wydajność może się różnić w zależności od wykonywanej operacji. Długość ArrayList jest ustalona, ​​podczas gdy rozmiar ArrayList można dynamicznie zwiększać lub zmniejszać, więc ArrayList ma niewielką przewagę nad Array pod względem funkcjonalności. Jednak pomimo różnic mają one również pewne podobieństwa. Obie są strukturami danych opartymi na indeksie w Javie, które pozwalają na przechowywanie obiektów i oba pozwalają na wartości zerowe, a także duplikaty. Cóż, jeśli znasz wcześniej rozmiar obiektów, powinieneś użyć tablicy, a jeśli nie masz pewności co do rozmiaru, skorzystaj z ArrayList.