Kas yra „Java“ dinaminis masyvas?

„Java“ dinaminis masyvas yra masyvo tipas, labai pagerinantis automatinio dydžio keitimą. Vienintelis masyvų apribojimas yra tai, kad jis yra fiksuoto dydžio.

Masyvai yra homogeniškos duomenų struktūros, įdiegtos „Java“ kaip objektai. Masyvuose saugoma viena ar daugiau konkretaus duomenų tipo reikšmių ir suteikiama indeksuota prieiga, kad jie būtų saugomi. Konkretus masyvo elementas pasiekiamas pagal jo indeksą. Šiame straipsnyje aptarsime „Java“ dinaminį masyvą tokia seka:

„Java“ dinaminio masyvo įvadas

Dinaminis masyvas yra tokio tipo masyvas, kuris labai pagerina automatinio dydžio keitimą. Vienintelis masyvų apribojimas yra tai, kad jis yra fiksuoto dydžio. Tai reiškia, kad galite nurodyti tik tų elementų skaičių, kuriuos jūsų masyvas gali laikyti anksčiau laiko. Kita vertus, dinaminiai masyvai gali išsiplėsti, kai realiuoju laiku pridedame daugiau elementų. Todėl koduotojui nereikia anksčiau nustatyti masyvo dydžio. Jis taip pat turi dar keletą stipriųjų pusių:





  • Greita paieška . Tas pats kaip ir masyvai, kai elementui gauti tam tikroje rodyklėje reikia O (1) laiko.



  • Kintamas dydis . Mes galime įterpti tiek elementų, kiek norime, todėl dinaminis masyvas atitinkamai išsiplės, kad juos laikytų.

  • Talpykla . Panašiai kaip masyvai, dinaminiai masyvai gali įdėti elementus šalia vienas kito į atmintį, tokiu būdu efektyviai naudojant talpyklas.



Yra keletas dinaminių masyvų naudojimo mūsų kode trūkumų. Nors daugumoje programų mes dinamiškus masyvus naudojame labiau nei bet kas, tačiau kai kuriais atvejais dėl savo apribojimų jie netampa labiausiai pageidaujamu pasirinkimu.

java liejimas dvigubai int
  • Lėtas blogiausias atvejis . Paprastai, pridėjus naują elementą dinaminio masyvo gale, vienoje instancijoje reikia O (1). Tačiau, jei dinaminiame masyve nebėra daugiau naujo elemento indeksų, jį reikės išplėsti, o tai vienu metu užima O (n).

  • Brangus įterpimas ir ištrynimas. Panašiai kaip masyvai, elementai saugomi greta vienas kito. Taigi, norint pridėti ar pašalinti elementą masyvo centre, reikia stumti kitus elementus, kurie vienu metu užima O (n).

Žemiau pateiktose diagramose parodyta, kaip masyvai veikia realiuoju laiku, ir vaizduojama, kaip elementai yra sukrauti. Tai taip pat parodo, kaip keičiasi instrukcijos vidutiniam ir blogiausiam masyvo funkcijų atvejui.

masyvas - dinaminis masyvas java - edureka

Dydis ir talpa

Kai inicijuojame dinaminį masyvą, dinaminio masyvo įgyvendinimas sukuria suprantamą fiksuoto dydžio masyvą. Pradinis dydis atitinka įgyvendinimą. Pvz., Padarykime savo įgyvendinimo masyvą naudodami 10 indeksų. Dabar prie savo dinaminio masyvo pridedame keturis elementus. Dabar mūsų dinaminio masyvo ilgis yra keturi. Tačiau mūsų pagrindinio masyvo ilgis yra 10. Taigi mes galime pasakyti, kad dinaminio masyvo dydis yra keturi, o jo talpa yra 10. Dinaminis masyvas saugo konkretų pabaigos indeksą, kad būtų galima stebėti dinaminio masyvo pabaigos tašką ir pradžios taškas, nuo kurio prasideda papildomas pajėgumas.

Padvigubėja

Gali būti atvejų, kai bandome pridėti elementą prie masyvo, kuriame talpa jau pilna. Taigi, norėdami sukurti kambario dinaminius masyvus, automatiškai sukurkite naują, didesnį ir pagrindinį masyvą. Paprastai jis tampa dvigubai didesnis tvarkant bet kokius naujus priedus, kurių anksčiau nenumatė. Taigi, kiekvieno elemento kopijavimas nereikalauja laiko. Kai elementą pridedate prie mūsų dinaminio masyvo, automatiškai sukuriamas naujas dvigubo dydžio pagrindinis masyvas, kuriam pridėti nereikia laiko.

Elemento trynimas

Ištrinant elementą iš masyvo, numatytasis „Remove ()“ metodas pašalina elementą iš pabaigos ir automatiškai išsaugo nulį paskutiniame rodyklėje. Jis taip pat ištrins tam tikro indekso elementus, iškviesdamas metodą „removeAt (i)“, kur „I“ yra indeksas. Metodas „removeAt (i)“ perkelia visus reikiamus elementus kairėje pusėje nuo nurodyto indekso.

Masyvo dydžio keitimas

Kai masyvuose nėra duomenų dešinėje masyvo pusėje, kurie užima nereikalingą atmintį, metodas srinkSize () atlaisvina papildomą atmintį. Išnaudojus visus laiko tarpsnius ir pridedant papildomų elementų, pagrindinis fiksuoto dydžio masyvas turi padidinti dydį. Faktinis dydžio keitimas yra brangus, nes turime paskirti didesnį masyvą ir nukopijuoti visus elementus iš masyvo, kurį peraugote, kol jis galiausiai galės pridėti naują elementą.

Žemiau pateikiamas programos pavyzdys, kai masyvo dydis tampa pilnas, o nauji elementai nukopijuojami į naują dvigubo dydžio masyvą. Elementas, kuris yra styginių elementas, vadinamas „Mahavir“, yra jau pilno 3 dydžio masyvo papildymas.

importuoti java.util.ArrayList importuoti java.util.Arrays importuoti java.util.Scanner viešąją klasę AddingItemsDynamically {public static void main (String args []) {Scanner sc = new Scanner (System.in) System.out.println (' Įveskite masyvo dydį :: ') int size = sc.nextInt () String myArray [] = new String [size] System.out.println (' Enter a array (Strings) :: ') for (int i = 0 i

Išvestis:

Tuo mes artėjame prie „Dynamic Array in Java“ straipsnio pabaigos. Tikiuosi, kad supratote, kaip dirbti su dinaminiais masyvais.

Patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. „Edureka“ mokymai ir sertifikavimo kursai „Java J2EE“ ir „SOA“ skirti studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žaisti „Java“ programavimą ir išmokyti pagrindinių bei pažangių „Java“ koncepcijų kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio „Dynamic Array in Java“ tinklaraščio komentarų skyriuje, ir mes kuo greičiau susisieksime su jumis.