Array a ArrayList

Anonim

Co je to Array a ArrayList?

Array a ArrayList jsou datové struktury založené na indexech, které se často používají v aplikacích Java. Koncepčně řečeno, ArrayList je interně podporován řadami, nicméně pochopení rozdílu mezi těmito dvěma je klíčem k tomu, že se stanete skvělým Java vývojářem. Je to docela základní krok, především začátečníci, kteří právě začali kódovat. Zatímco oba se používají k ukládání prvků v jazyce Java, které mohou být buď primitivy nebo objekty, mají svůj spravedlivý rozdíl v funkčnosti a výkonu. Hlavní rozdíl mezi těmito dvěma je, že pole je statické, zatímco ArrayList má dynamický charakter. Tento článek porovnává dva aspekty v různých aspektech, takže si můžete zvolit jeden nad druhým.

Rozdíl mezi Array a Arraylist

  1. Změnitelný

Jeden z hlavních a zřetelných rozdílů mezi dvěma datovými strukturami je to, že pole je statické povahy, což znamená, že je datový typ s pevnou délkou, zatímco ArrayList je dynamický v přírodě, což znamená, že jde o datovou strukturu s proměnnou délkou. Z technického hlediska nemůže být délka pole po vytvoření objektu Array změněna nebo modifikována. Obsahuje sekvenční sběr prvků stejného datového typu. Políčka v jazyce Java pracují jinak než v C / C ++. ArrayList, na druhé straně, může měnit velikost a pole mohou růst, jak potřebují. Jelikož se jedná o dynamickou datovou strukturu, mohou být prvky ze seznamu přidány a odebrány.

  1. Generics

Nelze vytvořit pole obecných tříd rozhraní v Javě, takže pole a generika nepůjdou ruku v ruce, což znemožňuje vytvářet generické pole z jednoho základního důvodu, že pole jsou kovalentní, zatímco generiky jsou invariantní. Zatímco pole Array je datová struktura s pevnou délkou, obsahuje objekty stejné třídy nebo primitivy daného datového typu. Takže pokud se při vytváření objektu Array pokusíte uložit jiný datový typ než zadaný, jednoduše jej hodí "ArrayStoreException". ArrayList na druhé straně podporuje Generics, aby zajistil bezpečnost typů.

  1. Primitivní

Primární datové typy jako int, double, long a char nejsou povoleny v ArrayList. Spíše obsahuje objekty a primitivy nejsou považovány za objekty v Javě. Na druhé straně matice mohou obsahovat primitivy i objekty v jazyce Java, protože jsou jednou 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 držel objekty, které mohou být buď stejného, ​​nebo jiného typu.

  1. Délka

Aby bylo možné získat délku pole, musí kód získat přístup k atributu délky, protože je třeba znát délku pro provádění operací v poli Array. Zatímco ArrayList používá metodu size () k určení velikosti pole ArrayList, je spíše odlišné od určení délky pole. Atribut metody size () určuje počet prvků v ArrayList, což je zase kapacita seznamu ArrayList.

Například:

veřejná třída ArrayLengthTest {

veřejná statická prázdná hlavní (String [] args) {

ArrayList arrList = nový ArrayList();

Řetězec [] položky = {"Jeden", "Dva", "Tři"};

pro (String str: items) {

arrList.add (str);

}

int velikost = položky.size ();

System.out.println (velikost);

}

}

  1. Implementace

Array je nativní programovací složka v jazyce Java, která je vytvořena dynamicky a používá operátor přiřazení k držení prvků, zatímco ArrayList používá pro přidávání elementů atribut add (). ArrayList je třída z kolekčního rámce v Javě, která používá soubor specifikovaných metod pro přístup a úpravu prvků. Velikost pole ArrayList lze dynamicky zvětšit nebo snížit. Elementy v poli jsou uloženy v souvislé paměti a jeho velikost zůstává statická.

  1. Výkon

Zatímco oba datové struktury poskytují podobný výkon jako ArrayList je podporován Arrays, jeden má malý okraj nad jiným hlavně co se týče času procesoru a využití paměti. Řekněme, že pokud víte velikost pole, pravděpodobně půjdete s ArrayList. Nicméně, iterating přes pole je o něco rychlejší než iterating přes ArrayList. Pokud program zahrnuje velké množství primitiv, pole bude výrazně lepší než ArrayList, pokud jde o čas i paměť. Políčka jsou nízkoúrovňový programovací jazyk, který lze použít v kolekčních implementacích. Výkon se však může lišit v závislosti na provozu, který provádíte.

Array Vs. Arraylist

Array ArrayList
Array je datová struktura s pevnou délkou, jejíž délka nemůže být změněna po vytvoření objektu pole. ArrayList má dynamickou povahu, což znamená, že se může v případě potřeby změnit.
Velikost pole zůstává statická po celou dobu programu. Velikost pole ArrayList může dynamicky růst v závislosti na zatížení a kapacitě.
Používá operátor přiřazení pro ukládání prvků. Používá atribut add () pro vložení prvků.
Může obsahovat primitivy i objekty stejného nebo jiného typu dat. Primitives nejsou povoleny v ArrayListu. Může obsahovat pouze typy objektů.
Pole a generika nejdou ruku v ruce. Generika jsou povoleny v ArrayListu.
Políčka mohou být vícerozměrná. ArrayList je jednorozměrný.
Je to nativní součást programování, kde jsou prvky uloženy v sousedních paměťových místech. Je to třída ze sbírkového systému Java, kde se objekty nikdy nenacházejí v sousedních místech.
Proměnná délky se používá k určení délky pole. Metoda Size () slouží k určení velikosti pole ArrayList.
Využívá méně paměti než ArrayList pro ukládání specifikovaných prvků nebo objektů. Využívá více paměti než pole pro ukládání objektů.
Přepisování přes pole je rychlejší než přechod přes ArrayList. Iterace přes ArrayList je výrazně pomalejší z hlediska výkonu.

souhrn

Zatímco někteří si mohou myslet, že implementace polí v programu může dostat výsledky rychleji než dělat totéž s ArrayLists z jednoduchého důvodu, že pole jsou nízkoúrovňové datové struktury, může se výkon lišit podle toho, jakou operaci provádíte. Doba pole je opravena, zatímco velikost ArrayList může být dynamicky zvýšena nebo snížena, takže ArrayList má z hlediska funkčnosti malý okraj nad polem. Nicméně i přes rozdíly sdílejí některé podobnosti. Oba jsou datové struktury založené na indexech v jazyce Java, které umožňují ukládat objekty a oba umožňují nulové i duplicitní hodnoty. Pokud znáte velikost objektů v předstihu, měli byste jít s polem a pokud si nejste jisti, jak je velikost, jděte s ArrayList.