Array i ArrayList jsou datové struktury založené na indexech, které se často používají v programech Java. Z koncepčního hlediska je ArrayList interně podporován poli, nicméně pochopení rozdílu mezi nimi je klíčem k tomu, aby se stal skvělým vývojářem Java. Je to docela základní krok začít, zejména začátečníci, kteří právě začali kódování. Zatímco oba se používají k ukládání prvků v Javě, které mohou být buď primitivní, nebo objekty, mají spravedlivý podíl na rozdílech, pokud jde o funkčnost a výkon. Hlavní rozdíl mezi nimi je v tom, že Array je statický, zatímco ArrayList je svou povahou dynamický. Tento článek porovnává dva různé aspekty, takže si můžete vybrat jeden přes druhý.
Jedním z hlavních a znatelných rozdílů mezi oběma datovými strukturami je to, že Array je ve své podstatě statický, což znamená, že se jedná o datový typ s pevnou délkou, zatímco ArrayList je v podstatě dynamický, což znamená, že se jedná o datovou strukturu s proměnnou délkou. Po technické stránce nelze po vytvoření objektu Array délku pole změnit ani změnit. Obsahuje sekvenční sběr prvků stejného datového typu. Pole v Java pracují odlišně, než v C / C ++. Na druhé straně může ArrayList změnit velikost a pole se může podle potřeby rozšiřovat. Protože se jedná o dynamickou strukturu dat, mohou být prvky přidány a odebrány ze seznamu.
V Javě nemůžete vytvořit Arrays of Generic tříd rozhraní, takže pole a generika jdou ruku v ruce, což znemožňuje vytvořit Generic Array z jednoho základního důvodu, že pole jsou kovariantní, zatímco generika jsou invariantní. Zatímco Array je datová struktura s pevnou délkou, obsahuje objekty stejné třídy nebo primitivy specifického datového typu. Pokud se při vytváření objektu Array pokusíte uložit jiný typ dat než ten, který byl zadán, jednoduše vyvolá „ArrayStoreException“. Na druhou stranu ArrayList nepodporuje Generics, aby zajistil typovou bezpečnost.
V ArrayListu nejsou povoleny primitivní datové typy jako int, double, long a char. Spíše drží objekty a primitivy nejsou považovány za objekty v Javě. Pole, na druhé straně, mohou pojmout primitivy i objekty v Javě, protože je to jedna z nejúčinnějších datových struktur v Javě pro ukládání objektů. Je to agregovaný datový typ, který je navržen tak, aby uchovával objekty, které mohou být stejného nebo jiného typu.
Aby bylo možné získat délku pole, musí kód přistupovat k atributu length, protože člověk musí znát délku, aby mohl provádět operace na poli. Zatímco ArrayList používá k určení velikosti ArrayListu metodu size (), je poněkud odlišná od určení délky pole. Atribut size () určuje počet prvků v ArrayList, což je kapacita ArrayList.
Například:
veřejná třída ArrayLengthTest
public static void main (String [] args)
ArrayList arrList = new ArrayList ();
String [] items = „One“, „Two“, „Three“;
pro (String str: items)
arrList.add (str);
int size = items.size ();
System.out.println (velikost);
Array je nativní programovací komponenta v Javě, která je vytvářena dynamicky a pro přidržování elementů používají operátor přiřazení, zatímco ArrayList používá k vložení elementů atribut add (). ArrayList je třída z kolekce kolekce v Javě, která používá sadu specifikovaných metod pro přístup a úpravu prvků. Velikost ArrayListu lze dynamicky zvýšit nebo snížit. Prvky v poli jsou uloženy v souvislém paměťovém umístění a jeho velikost zůstává po celou dobu statická.
I když obě datové struktury poskytují podobný druh výkonu jako ArrayList, který je podporován poli, jeden má trochu výhodu oproti druhému většinou z hlediska využití času CPU a využití paměti. Řekněme, že pokud znáte velikost pole, pravděpodobně půjdete s ArrayListem. Iterace přes pole je však o něco rychlejší než iterace přes pole ArrayList. Pokud program zahrnuje velké množství primitiv, bude pole fungovat výrazně lépe než ArrayList, pokud jde o čas i paměť. Pole jsou nízkoúrovňový programovací jazyk, který lze použít v implementacích kolekce. Výkon se však může lišit v závislosti na prováděné operaci.
Pole | ArrayList |
Pole je datová struktura s pevnou délkou, jejíž délku nelze po vytvoření objektu pole změnit. | ArrayList je svou povahou dynamický, což znamená, že se může v případě potřeby samo změnit. |
Velikost pole zůstává v celém programu statická. | Velikost pole ArrayList může dynamicky růst v závislosti na zatížení a kapacitě. |
K ukládání prvků používá operátor přiřazení. | K vkládání prvků používá atribut add (). |
Může obsahovat primitivy i objekty stejného nebo jiného typu dat. | Primitivy nejsou v ArrayListu povoleny. Může obsahovat pouze typy objektů. |
Pole a generici nejdou ruku v ruce. | Generika jsou povolena v ArrayListu. |
Pole mohou být vícerozměrná. | ArrayList je jednorozměrný. |
Je to nativní programovací komponenta, kde jsou prvky uloženy v sousedících paměťových místech. | Je to třída z kolekce Java, kde objekty nikdy nejsou uloženy na sousedních místech. |
Proměnná délka se používá k určení délky pole. | Size () se používá k určení velikosti ArrayList. |
Uložení určených prvků nebo objektů zabere méně paměti než ArrayList. | Ukládání objektů vyžaduje více paměti než pole. |
Iterace přes pole je rychlejší než iterace přes ArrayList. | Iterace přes ArrayList je z hlediska výkonu výrazně pomalejší. |
I když si někteří mohou myslet, že implementace polí v programu může získat výsledky rychleji než to samé s ArrayLists z jednoduchého důvodu, že pole jsou datová struktura na nízké úrovni, výkon se může lišit v závislosti na operaci, kterou provádíte. Délka pole je pevně stanovena, zatímco velikost pole ArrayList může být dynamicky zvětšena nebo zmenšena, takže ArrayList má z hlediska funkčnosti malou výhodu nad polem. I přes rozdíly však sdílejí také některé podobnosti. Oba jsou datové struktury založené na indexech v Javě, které vám umožňují ukládat objekty a oba umožňují nulové hodnoty i duplikáty. Pokud znáte velikost objektů předem, měli byste jít s maticí, a pokud si nejste jistí velikostí, jděte s ArrayList.