Array i ArrayList
Co to jest Array i ArrayList?
Zarówno Array, jak i ArrayList są strukturami danych opartymi na indeksach, które są często używane w programach Java. Koncepcyjnie, ArrayList jest wewnętrznie wspierany przez tablice, jednak zrozumienie różnicy między nimi jest kluczem do zostania świetnym programistą Java. Jest to podstawowy krok do przodu, szczególnie dla początkujących, którzy właśnie zaczęli kodować. Podczas gdy obie są używane do przechowywania elementów w Javie, które mogą być elementami pierwotnymi lub obiektami, mają one sprawiedliwy udział w różnicach pod względem funkcjonalności i wydajności. Główna różnica między nimi polega na tym, że Array jest statyczny, a ArrayList ma charakter dynamiczny. W tym artykule porównano dwa aspekty różnych aspektów, aby można było wybrać jeden nad drugim.
Różnica między Arraylist i Arraylist
- Zmiana 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 strukturą danych o zmiennej długości. Z technicznego punktu widzenia długość Array nie może być zmieniana ani modyfikowana po utworzeniu obiektu Array. Zawiera sekwencyjne gromadzenie elementów tego samego typu danych. Tablice w Javie działają inaczej, niż funkcjonują w C / C ++. Z drugiej strony, ArrayList może zmienić rozmiar siebie i tablice mogą rosnąć w miarę potrzeb. Ponieważ jest to dynamiczna struktura danych, elementy można dodawać i usuwać z listy.
- Generics
Nie można tworzyć tablic generycznych klas interfejsów w Javie, więc tablice i generics nie idą ze sobą w parze, uniemożliwiając tworzenie macierzy ogólnej z jednego podstawowego powodu, że tablice są kowariancyjne, podczas gdy generics są niezmienne. Chociaż Array jest strukturą danych o stałej długości, zawiera obiekty tej samej klasy lub prymitywy określonego typu danych. Jeśli więc spróbujesz zapisać inny typ danych niż określony podczas tworzenia obiektu Array, po prostu wyrzuci "ArrayStoreException". Z kolei ArrayList wspiera Generics, aby zapewnić bezpieczeństwo typu.
- Prymitywy
Pierwotne typy danych, takie jak int, double, long i char, nie są dozwolone w ArrayList. Raczej trzyma obiekty i prymitywy nie są uważane za obiekty w Javie. Z drugiej strony, tablice mogą przechowywać prymitywy oraz obiekty w Javie, ponieważ jest to jedna z najbardziej wydajnych struktur danych w Javie do przechowywania obiektów. Jest to zagregowany typ danych przeznaczony do przechowywania obiektów, które mogą być tego samego lub innego typu.
- Długość
Aby uzyskać długość tablicy, kod musi uzyskać dostęp do atrybutu length, ponieważ trzeba znać długość, aby wykonywać operacje na Array. Podczas gdy ArrayList używa metody size () do określenia rozmiaru tablicy ArrayList, różni się ona znacznie od określania długości tablicy. Atrybut size () określa liczbę elementów w tablicy ArrayList, która z kolei jest pojemnością ArrayList.
Na przykład:
public class ArrayLengthTest {
public static void main (String [] args) {
ArrayList String [] items = {"One", "Two", "Three"}; for (String str: items) { arrList.add (str); } int size = items.size (); System.out.println (rozmiar); } } Array jest rodzimym komponentem programowania w Javie, które są tworzone dynamicznie i używają operatora przypisania do przechowywania elementów, a ArrayList używają 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 tablicy ArrayList może być zwiększany lub zmniejszany dynamicznie. Elementy w tablicy są przechowywane w przyległej lokalizacji pamięci, a jej rozmiar pozostaje cały czas stały. Podczas gdy obie struktury danych zapewniają podobną wydajność, ponieważ ArrayList jest wspierany przez Array, jeden ma trochę przewagę nad drugą, głównie pod względem czasu procesora i użycia pamięci. Powiedzmy, że jeśli znasz rozmiar tablicy, prawdopodobnie skorzystasz z ArrayList. Jednak iteracja po macierzy jest nieco szybsza niż iterowanie po tablicy ArrayList. Jeśli program zawiera dużą liczbę prymitywów, tablica będzie działała znacznie lepiej niż ArrayList, zarówno pod względem czasu, jak i pamięci. Tablice są językiem programowania niskiego poziomu, który może być używany w implementacjach kolekcji. Wydajność może się jednak różnić w zależności od wykonywanej operacji. Podczas gdy niektórzy mogą sądzić, że implementacja tablic w programie może przynieść rezultaty szybciej niż w przypadku ArrayLists z prostego powodu, że tablice są strukturą danych niskiego poziomu, wydajność może się różnić w zależności od wykonywanej operacji. Cóż, długość tablicy jest stała, podczas gdy rozmiar ArrayList może być zwiększany lub zmniejszany dynamicznie, więc ArrayList ma niewielką przewagę nad Array pod względem funkcjonalności. Jednak pomimo różnic dzielą również pewne podobieństwa. Obie są strukturami danych opartymi na indeksie w Javie, które pozwalają na przechowywanie obiektów i zarówno zezwalają na wartości puste, jak i na duplikaty. Cóż, jeśli znasz rozmiar obiektów wcześniej, powinieneś pójść z tablicą, a jeśli nie jesteś pewien rozmiaru, idź z ArrayList.
Array vs. Arraylist
Szyk
ArrayList
Array jest strukturą danych o stałej długości, której długości nie można zmodyfikować po utworzeniu obiektu tablicy.
ArrayList ma charakter dynamiczny, co oznacza, że w razie potrzeby może zmienić rozmiar.
Rozmiar tablicy pozostaje stały w całym programie.
Rozmiar tablicy ArrayList może dynamicznie wzrastać 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 oraz obiekty o tym samym lub innym typie danych.
Prymitywy nie są dozwolone w ArrayList. Może zawierać tylko typy obiektów.
Tablice i generics nie idą w parze.
Generics 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 z frameworku kolekcji Java, w której obiekty nigdy nie są przechowywane w sąsiadujących lokalizacjach.
Zmienna długości służy do określenia długości tablicy.
Metoda Size () służy do określenia rozmiaru tablicy 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.
Iterowanie po tablicy jest szybsze niż iterowanie po tablicy ArrayList.
Iterowanie przez ArrayList jest znacznie wolniejsze pod względem wydajności.
streszczenie