Rozdíly mezi Array vs ArrayList

Array a ArrayList jsou důležité datové struktury, které se používají k ukládání řady prvků a jejich zpracování. Mezi nimi jsou však zásadní rozdíly. Dobrý programátor si musí být vědom jejich srovnání, aby mohl efektivně rozhodnout o tom, co použít kdy a proč.

Pole

Pole je struktura dat, kde můžeme ukládat prvky dané velikosti podobného typu. Například celé pole typu typu, pole typu řetězce atd. Normální pole v Javě je tedy strukturou statických dat.

ArrayList

ArrayList je dynamická struktura dat, do níž lze položky přidávat a odebírat ze seznamu. Pokud si nejste jisti, kolik prvků ve vašem poli bude, tato dynamická struktura dat vás zachrání.

V tomto článku budeme diskutovat rozdíly mezi Array a ArrayList v java.

Příklad k porozumění Array i ArrayList

Pole je datová struktura, kde můžeme ukládat prvky dané pevné velikosti podobného typu.

Příklad kódu:

Vytvořme řadu pěti prvků typu int. Budeme iterovat skrze ně pomocí smyčky

ArrayList je dynamická struktura dat, do níž lze položky přidávat a odebírat ze seznamu. Pokud si nejste jisti, kolik prvků ve vašem poli bude, tato dynamická struktura dat vás zachrání.

Příklad kódu:

Rozdíly mezi hlavami mezi poli a seznamem polí (infografika)

Níže jsou uvedeny hlavní rozdíly mezi Array a ArrayList:

Klíčové rozdíly mezi Array a ArrayList v Javě

1. Flexibilita

Pole je struktura statických dat. Jakmile definujete velikost pole, nemůžete změnit jeho velikost. Normální pole v Javě je proto strukturou statických dat, protože počáteční velikost pole je pevná.

Na druhé straně je ArrayList flexibilní. Podle potřeby můžete položky ze seznamu přidávat nebo odebírat. Při odstraňování položek z ArrayListu přiřazujeme null indexu, jehož hodnota je odstraněna, a celá hodnota indexu je automaticky snížena o jednu. Podobné platí také pro přidání.

2. Implementace

Pole je datová struktura, ve které můžeme ukládat prvky dané pevné velikosti podobného typu. ArrayList je dynamická struktura dat, do níž lze položky přidávat a odebírat ze seznamu. Ve skutečnosti je ArrayList implementován pomocí pole v Javě. Chcete-li k vytvoření objektu ArrayList použít metodu ArrayList (), musíte importovat balíček java.util.ArrayList.

Příklad úryvku kódu pole

Příklad kódu Snippet of ArrayList

3. Výkon

Přestože je ArrayList v zásadě založen na Array, vidíme mezi nimi rozdíly ve výkonu. Důvodem je typ úložiště a funkčnost ArrayList. Vidíme rozdíly ve výkonu, pokud jde o čas CPU a využití paměti. V závislosti na prováděných operacích se bude výkon Array a ArrayList lišit:

ArrayList vyžaduje více paměti pro účely ukládání ve srovnání s maticí. Důvodem je, že ukládání podobných objektů vyžaduje více paměti než ukládání podobných proměnných primitivního typu.

operace resize (): ArrayList používá automatickou změnu velikosti, kde je vytvořeno dočasné pole pro kopírování prvků ze starého pole do nového pole. To zpomaluje celkový výkon.

operace get (): Pro přístup založený na indexu mají ArrayList i pole stejný výkon, protože to vyžaduje konstantní čas.

operace add (): Zde vidíme klíčový rozdíl, protože přidání nového prvku do ArrayList vyžaduje interně dvě operace: Kopírovat a změnit velikost. Přidání v ArrayList vytvoří nové pole na pozadí a zkopíruje prvky ze starého do nového pole.

4. Primitiva

Pole může ukládat primitivní i objektové typy prvků. Na druhou stranu ArrayList nemůže ukládat primitivní typy; může ukládat pouze objekty stejného typu.

Jak tedy můžeme ukládat celé hodnoty do seznamu polí?

Odpověď je schopnost autoboxingu JVM. Autoboxing interně převádí primitivní na své ekvivalentní objekty.

Například:

Proto autoboxing interně provádí níže věci

5. Typ bezpečnosti

Pole může ukládat pouze prvky podobného typu. Pokud chcete ukládat jiné typy prvků do pole jiného než určené, vyvolá ArrayStoreException při vytváření objektu tohoto pole. Tato výjimka bude vyvolána za běhu, protože pole tedy není bezpečné pro daný typ; pro pole neexistuje žádná kontrola kompilace.

Například:

Na druhé straně je ArrayList typově bezpečný, protože zajišťuje druhovou bezpečnost pomocí generik. Generics umožňuje kompilátoru zkontrolovat, zda během kompilace nedošlo k nějakému neshodě typu.

6. Iterace hodnot

ArrayList používá k vytvoření kolekce metodu iterator (). Pak pomocí smyčky while procházíme prvky jeden po druhém a vytiskneme hodnoty.

Na druhou stranu můžeme pro smyčku nebo pro každou smyčku použít iteraci skrz pole.

7. Délka

V mnoha případech použití může být nutné získat velikost celého pole. V případě Arraylistu je tento výpočet zcela rovný. Můžeme získat délku ArrayListu pomocí metody size ().

Na druhou stranu má každý objekt pole proměnnou length, která vrací délku pole.

Například:

8. Přidání prvků

V ArrayListu je možné přidat nebo vložit, protože se jedná o dynamickou strukturu dat. Můžeme použít metodu add () k vložení prvků do pole ArrayList po jeho vytvoření.

Na druhé straně je velikost pole pevná. Můžeme však vložit prvky do pole přiřazením. Nemůžeme dynamicky přidávat nové prvky nad velikost pole.

Například:

9. Rozměr

ArrayList je jednorozměrný. Zatímco pole může být vícerozměrné.

Například:

Array a ArrayList - srovnávací tabulka

Pojďme diskutovat o nejlepším srovnání mezi Array a ArrayList

Základ srovnáníPoleArrayList
FlexibilitaPole je struktura statických datArrayList je struktura dynamických dat
Primitivmůže ukládat primitivní i objektové prvkylze ukládat pouze objekty stejného typu.
Typ BezpečnostPole může ukládat pouze prvky podobného typu. Jinak zahodí ArrayStoreException při vytváření objektu tohoto pole.ArrayList je typově bezpečný, protože zajišťuje typovou bezpečnost generiky.
Iterace hodnotpoužijte pro smyčku nebo pro každou smyčku k dosažení iterace.K vytvoření kolekce používá metodu iterator ()
Přidávání prvkůmůže vložit prvky do pole přiřazením.použijte metodu add () k vložení prvků do pole ArrayList

Dimenzevícerozměrnéjednorozměrné

Závěr-Array vs ArrayList

To vše se týká důležitého rozdílu mezi maticí a ArrayListem v Javě. Nejdůležitější zásadní rozdíl, který musíte mít na paměti, je to, že pole je statické, zatímco ArrayList je svou povahou dynamický. Zejména na základě tohoto rozdílu musíte použít pole, pokud rozeznáte dimenze vpřed, pokud si nejste jisti, jednoduše použijte ArrayList.

Doporučené články

Toto je průvodce Array vs ArrayList. Zde diskutujeme klíčové rozdíly Array vs ArrayList s infografiky, příklady a srovnávací tabulkou. Další informace naleznete také v dalších navrhovaných článcích -

  1. Java Vector vs ArrayList
  2. C # Array vs List
  3. C vs Java
  4. Výhody pole
  5. Iterátor v Javě
  6. Výhody smyček Python | Příklad

Kategorie: