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 porovnania | rad | ArrayList |
flexibilita | Pole je štruktúra statických údajov | ArrayList je štruktúra dynamických údajov |
primitíva | dokáže ukladať primitívne aj objektové typy prvkov | môž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ôt | použiť pre slučku alebo pre každú slučku na dosiahnutie iterácie. | Na vytvorenie kolekcie použije metódu iterator () |
Pridávanie prvkov | môže vložiť prvky do poľa priradením. | na vloženie prvkov do poľa ArrayList použite metódu add () |
rozmer | multi-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 -
- Java Vector vs ArrayList
- C # Array vs List
- C vs Java
- Výhody poľa
- Iterátor v Jave
- Výhody slučiek Python príklad