Rozdiely medzi poľami ArrayList

Array a ArrayList sú dôležité dátové štruktúry, ktoré sa používajú na ukladanie množstva prvkov a ich spracovanie. Medzi nimi však existujú kľúčové rozdiely. Dobrý programátor si musí byť vedomý porovnania medzi nimi, aby mohol účinne rozhodnúť o tom, čo použiť kedy a prečo.

rad

Pole je dátová štruktúra, v ktorej môžeme ukladať prvky danej veľkosti podobného typu. Napríklad celé číslo typu poľa, pole typu reťazca atď. Normálne pole v Jave je preto štruktúra statických údajov.

ArrayList

ArrayList je dynamická dátová štruktúra, do ktorej je možné pridávať a odstraňovať položky zo zoznamu. Takže ak si nie ste istí, koľko prvkov bude vo vašom poli, táto dynamická štruktúra údajov vás ušetrí.

V tomto článku budeme diskutovať o rozdieloch medzi Array a ArrayList v jave.

Príklad na porozumenie polí Array a ArrayList

Pole je dátová štruktúra, v ktorej môžeme ukladať prvky danej pevnej veľkosti podobného typu.

Príklad kódu:

Vytvorme rad piatich prvkov typu int. Budeme ich opakovať pomocou slučky

ArrayList je dynamická dátová štruktúra, do ktorej je možné pridávať a odstraňovať položky zo zoznamu. Takže ak si nie ste istí, koľko prvkov bude vo vašom poli, táto dynamická štruktúra údajov vás ušetrí.

Príklad kódu:

Rozdiely medzi dvoma polohami medzi poľami a poľami (infografika)

Nižšie sú uvedené najväčšie rozdiely medzi Array a ArrayList:

Kľúčové rozdiely medzi poľami Array a ArrayList v Jave

1. Flexibilita

Pole je štruktúra statických údajov. Po definovaní veľkosti poľa už nemôžete zmeniť jeho veľkosť. Normálne pole v Jave je preto statická dátová štruktúra, pretože počiatočná veľkosť poľa je pevná.

Na druhej strane je ArrayList flexibilný. Položky zo zoznamu môžete podľa potreby pridať alebo odstrániť. Pri odstraňovaní položiek z poľa ArrayList priradíme null indexu, ktorého hodnota sa odstráni, a celá hodnota indexu sa automaticky zníži o jednu. Podobné platí aj pre sčítanie.

2. Implementácia

Pole je dátová štruktúra, v ktorej môžeme ukladať prvky danej pevnej veľkosti podobného typu. ArrayList je dynamická dátová štruktúra, do ktorej je možné pridávať a odstraňovať položky zo zoznamu. V skutočnosti je ArrayList implementovaný pomocou poľa v Java. Ak chcete na vytvorenie objektu ArrayList použiť metódu ArrayList (), musíte importovať balík java.util.ArrayList.

Príklad útržku kódu poľa

Príklad kódu Snippet of ArrayList

3. Výkon

Aj keď je ArrayList v podstate založený na Array, vidíme medzi nimi rozdiely vo výkone. Je to kvôli typu úložiska a funkčnosti ArrayList. Vidíme rozdiely vo výkone, pokiaľ ide o čas CPU a využitie pamäte. V závislosti od vykonávaných operácií sa výkon polí Array a ArrayList bude líšiť:

ArrayList vyžaduje viac pamäte na účely ukladania v porovnaní s maticou. Dôvodom je, že ukladanie podobných objektov vyžaduje viac pamäte ako ukladanie podobných premenných primitívneho typu.

operácia resize (): ArrayList používa automatickú zmenu veľkosti, kde sa vytvorí dočasné pole na skopírovanie prvkov zo starého poľa do nového poľa. To spomaľuje celkový výkon.

operácia get (): Pre prístup založený na indexe majú ArrayList aj pole rovnaký výkon, pretože si to vyžaduje konštantný čas.

operácia add (): Tu vidíme kľúčový rozdiel, pretože pridanie nového prvku do ArrayList vyžaduje interne dve operácie: Kopírovanie a zmena veľkosti. Pridanie do poľa ArrayList vytvorí nové pole na pozadí a skopíruje prvky zo starého do nového poľa.

4. Primitíva

Pole môže ukladať primitívne aj objektové typy prvkov. Na druhej strane, ArrayList nemôže ukladať primitívne typy; môže ukladať iba objekty rovnakého typu.

Ako potom môžeme ukladať celé hodnoty do zoznamu polí?

Odpoveďou je schopnosť JVM autoboxovať. Autoboxing interne konvertuje primitívne na svoje ekvivalentné objekty.

Napríklad:

Preto autoboxing interne vykonáva nižšie veci

5. Typ bezpečnosti

Pole môže uchovávať iba prvky podobného typu. Ak chcete do poľa uložiť iné typy prvkov, ako sú uvedené, hodí ArrayStoreException pri vytváraní objektu tohto poľa. Táto výnimka bude vyvolaná za behu, pretože pole preto nie je bezpečné pre daný typ; pre pole neexistuje žiadna kontrola kompilácie.

Napríklad:

Na druhej strane je ArrayList typovo bezpečný, pretože zabezpečuje druhovú bezpečnosť pomocou generík. Generics umožňuje kompilátoru skontrolovať, či počas kompilácie nedošlo k nesúladu typu.

6. Striedanie hodnôt

ArrayList používa metódu iterator () na vytvorenie kolekcie. Potom pomocou slučky while prejdeme prvky jeden po druhom a vytlačíme hodnoty.

Na druhej strane môžeme použiť pre slučku alebo pre každú slučku iteráciu cez pole.

7. Dĺžka

V mnohých prípadoch použitia bude možno potrebné získať veľkosť celého poľa. V prípade Arraylistu je tento výpočet celkom priamočiary. Dĺžku súboru ArrayList môžeme získať pomocou metódy size ().

Na druhej strane má každý objekt poľa premennú length, ktorá vracia dĺžku poľa.

Napríklad:

8. Pridávanie prvkov

Pridávanie alebo vkladanie je možné v ArrayListe, pretože ide o štruktúru dynamických údajov. Môžeme použiť metódu add () na vloženie prvkov do poľa ArrayList po jeho vytvorení.

Na druhej strane je veľkosť poľa pevná. Do poľa však môžeme vložiť prvky podľa priradenia. Nemôžeme dynamicky pridávať nové prvky, ktoré presahujú veľkosť poľa.

Napríklad:

9. Rozmer

ArrayList je jednorozmerný. Zatiaľ čo pole môže byť viacrozmerné.

Napríklad:

Array and ArrayList - porovnávacia tabuľka

Poďme diskutovať o najlepšom porovnaní medzi Array a ArrayList

Základ porovnaniaradArrayList
flexibilitaPole je štruktúra statických údajovArrayList je štruktúra dynamických údajov
primitívadokáže ukladať primitívne aj objektové typy prvkovmôžu ukladať iba objekty rovnakého typu.
Typ BezpečnosťPole môže uchovávať iba prvky podobného typu. V opačnom prípade vyvolá ArrayStoreException pri vytváraní objektu tohto poľa.ArrayList je typovo bezpečný, pretože zabezpečuje druhovú bezpečnosť pomocou generík.
Iterácia hodnôtpoužiť pre slučku alebo pre každú slučku na dosiahnutie iterácie.Na vytvorenie kolekcie použije metódu iterator ()
Pridávanie prvkovmôže vložiť prvky do poľa priradením.na vloženie prvkov do poľa ArrayList použite metódu add ()

rozmermulti-dimenzionálnísingle-dimenzionální

Záver-Array vs ArrayList

To všetko sa týka dôležitého rozlíšenia medzi maticou a zoznamom polí v Java. Najdôležitejšie rozlíšenie, ktoré musíte mať na pamäti, je, že pole je statické, zatiaľ čo ArrayList je svojou povahou dynamický. Primárne na základe tohto rozlíšenia musíte použiť pole, ak spoznáte rozmery, ktoré sú pred nami, ak si nie ste istí, jednoducho použite zoznam polí.

Odporúčané články

Toto je príručka pre Array vs ArrayList. Tu diskutujeme kľúčové rozdiely Array vs ArrayList s infografikami, príkladmi a porovnávacou tabuľkou. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Java Vector vs ArrayList
  2. C # Array vs List
  3. C vs Java
  4. Výhody poľa
  5. Iterátor v Jave
  6. Výhody slučiek Python príklad

Kategórie: