Čo je Dynamic Array v Jave?



Dynamické pole v Jave je typ poľa s obrovským vylepšením pre automatickú zmenu veľkosti. Jediným obmedzením polí je, že ide o pevnú veľkosť.

Pole v sú homogénne dátové štruktúry implementované v Jave ako objekty. Polia ukladajú jednu alebo viac hodnôt konkrétneho dátového typu a poskytujú indexovaný prístup na ich ukladanie. Ku konkrétnemu prvku v poli sa pristupuje pomocou jeho indexu. V tomto článku sa budeme zaoberať dynamickým poľom v Jave v nasledujúcom poradí:

Úvod do dynamického poľa v Jave

Dynamické pole je taký typ poľa s obrovským vylepšením pre automatickú zmenu veľkosti. Jediným obmedzením polí je, že ide o pevnú veľkosť. To v preklade znamená, že môžete vopred určiť iba počet prvkov, ktoré vaše pole pojme. Na druhej strane sa dynamické polia môžu rozširovať, keď pridávame ďalšie prvky v reálnom čase. Kodér preto nemusí vopred určovať veľkosť poľa. Má tiež niekoľko ďalších silných stránok:





  • Rýchle vyhľadávanie . Rovnako ako všetky polia, pri načítaní prvku v danom indexe trvá O (1) čas.



  • Variabilná veľkosť . Môžeme vložiť toľko prvkov, koľko chceme, a dynamické pole sa podľa toho rozšíri, aby ich udržalo.

  • Priateľské pre medzipamäť . Podobné ako polia, aj dynamické polia môžu ukladať položky vedľa seba do pamäte, čo umožňuje efektívne využitie cache.



Používanie dynamických polí v našom kóde má určité negatíva. Aj keď vo väčšine aplikácií používame dynamické polia viac ako čokoľvek iné, existujú prípady, keď sa vďaka svojim obmedzeniam nestanú najpreferovanejšou voľbou.

  • Pomalé najhoršie prípady . Normálne, zatiaľ čo pridanie nového prvku na koniec dynamického poľa trvá v jednej inštancii O (1). Ak však dynamické pole nemá ďalšie indexy pre novú položku, bude sa musieť rozbaliť, čo bude trvať O (n) súčasne.

  • Nákladné vkladanie a mazanie. Podobne ako v poliach, aj prvky sú uložené vedľa seba. Takže zatiaľ čo pridávate alebo odstraňujete položku v strede poľa, vyžaduje to zatlačenie na ďalšie prvky, ktoré berú O (n) naraz.

Nasledujúce diagramy ukazujú, ako polia fungujú v reálnom čase, a znázorňujú, ako sú jednotlivé prvky usporiadané do seba. Ukazuje tiež, ako sa pokyny menia pre priemerný a najhorší prípad funkcií poľa.

pole - dynamické pole v jave - edureka

Veľkosť vs. kapacita

Keď inicializujeme dynamické pole, implementácia dynamického poľa vytvorí pochopené pole pevnej veľkosti. Počiatočná veľkosť zodpovedá implementácii. Napríklad urobme naše implementačné pole tak, aby používalo 10 indexov. Teraz pridávame štyri položky do nášho dynamického poľa. Naše dynamické pole má teraz dĺžku štyri. Naše základné pole má však dĺžku 10. Preto by sme mohli povedať, že veľkosť dynamického poľa sú štyri a jeho kapacita je 10. Dynamické pole ukladá konkrétny koncový index, aby bolo možné sledovať koncový bod dynamického poľa a začiatočný bod. bodom, odkiaľ začína ďalšia kapacita.

operátor rozsahu c ++

Zdvojnásobenie

Môžu sa vyskytnúť prípady, keď sa pokúsime pridať položku do poľa, kde je kapacita už plná. Preto, aby sa vytvorili dynamické polia miestnosti, automaticky sa vytvorí nové, väčšie a základné pole. Spravidla je dvojnásobne väčší na to, aby zvládol všetky nové prírastky, čo predtým nepredpokladal. Preto kopírovanie každej položky nespotrebúva čas. Kedykoľvek pripojíte položku k nášmu dynamickému poľu, automaticky sa vytvorí nové podkladové pole s dvojnásobnou veľkosťou, ktorého pridanie netrvá dlho.

Odstraňuje sa prvok

Pri mazaní prvku z poľa predvolená metóda „remove ()“ odstráni prvok od konca a automaticky uloží nulu pri poslednom indexe. Odstráni tiež prvky v konkrétnom indexe volaním metódy removeAt (i), kde „I“ je index. Metóda removeAt (i) posúva všetky pravé prvky na ľavej strane od daného indexu.

Zmena veľkosti poľa

Keď polia nemajú na pravej strane poľa žiadne údaje, ktoré by zaberali zbytočnú pamäť, metóda srinkSize () uvoľní ďalšiu pamäť. Keď sa vyčerpajú všetky sloty a pridajú sa ďalšie prvky, musí základné pole pevnej veľkosti zväčšiť veľkosť. Skutočná zmena veľkosti je drahá, pretože predtým, ako bude možné konečne pridať novú položku, musíme prideliť väčšie pole a prekopírovať všetky prvky z poľa, ktoré ste prerástli.

Nižšie je uvedený príklad programu, kde sa veľkosť poľa zaplní a nové prvky sa skopírujú do nového poľa s dvojnásobnou veľkosťou. Prvok, ktorý je reťazcovým prvkom s názvom „Mahavir“, je doplnkom k už úplnému súboru veľkosti 3.

import java.util.ArrayList import java.util.Arrays import java.util.Scanner verejná trieda AddingItemsDynamically {public static void main (String args []) {Scanner sc = new Scanner (System.in) System.out.println (' Zadajte veľkosť poľa :: ') int size = sc.nextInt () String myArray [] = nový String [veľkosť] System.out.println (' Zadajte prvky poľa (Strings) :: ') pre (int i = 0 i

Výkon:

Týmto sa dostávame na koniec článku Dynamic Array in Java. Dúfam, že ste dostali predstavu o tom, ako pracovať s dynamickými poliami.

Pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java. Kurz je navrhnutý tak, aby vám dal náskok v programovaní v Jave a naučil vás základné aj pokročilé koncepty Javy spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to, prosím, v sekcii komentárov v tomto blogu „Dynamic Array in Java“ a my sa vám ozveme čo najskôr.