Masyvas yra fiksuoto dydžio, vienalytis duomenų struktūra . Masyvų apribojimas yra tas, kad jie yra fiksuoto dydžio. Tai reiškia, kad deklaruodami masyvą turime nurodyti elementų skaičių. Čia kyla klausimas, ką daryti, jei norime įterpti elementą ir nebelieka vietos naujam elementui? Čia sąvoka dinaminis masyvas atsiranda. Jis dinamiškai išeikvoja masyvo dydį.
Šiame skyriuje mes suprasime kas yra dinaminis masyvas, dinaminio masyvo ypatybės, kaip pakeisti dinaminio masyvo dydį, ir kaip įdiegti dinaminį masyvą Java .
Kas yra dinaminis masyvas?
Dinaminis masyvas yra a kintamo dydžio sąrašo duomenų struktūra. Jis auga automatiškai, kai bandome įterpti elementą, jei nebelieka vietos naujam elementui. Tai leidžia mums pridėti ir pašalinti elementus. Vykdymo metu jis paskirsto atmintį naudodamas krūvą. Veikimo metu jis gali pakeisti savo dydį.
Į Java , ArrayList yra keičiamo dydžio įgyvendinimas. Jis įgyvendina sąrašo sąsają ir pateikia visus metodus, susijusius su sąrašo operacijomis. Dinaminio masyvo stiprumas yra:
lapė ar vilkas
- Greita paieška
- Kintamo dydžio
- Patogus talpyklai
Dinaminio masyvo veikimas
Dinaminiame masyve elementai saugomi greta nuo masyvo pradžios, o likusi erdvė lieka nepanaudota. Elementus galime pridėti tol, kol rezervuotas tarpas bus visiškai sunaudotas. Kai rezervuota erdvė išnaudojama ir reikia pridėti kai kurių elementų. Tokiu atveju fiksuoto dydžio masyvą reikia padidinti. Atkreipkite dėmesį, kad prieš pridėdami elementą skiriame didesnį masyvą, nukopijuojame elementus iš masyvo ir grąžiname naujai sukurtą masyvą.
kampinė medžiaga
Kitas būdas pridėti elementą – pirmiausia sukurti funkciją, kuri sukuria naują dvigubo dydžio masyvą, nukopijuoja visus elementus iš senojo masyvo ir grąžina naują masyvą. Taip pat galime sumažinti dinaminio masyvo dydį.
Dydis ir talpa
Dinaminio masyvo inicijavimas sukuria fiksuoto dydžio masyvą. Toliau pateiktame paveikslėlyje masyvo įgyvendinimas turi 10 indeksų. Į masyvą įtraukėme penkis elementus. Dabar pagrindinio masyvo ilgis yra penki. Todėl dinaminio masyvo dydžio ilgis yra 5, o jo talpa – 10. Dinaminis masyvas seka galutinį tašką.
Dinaminio masyvo ypatybės
„Java“ dinaminis masyvas turi tris pagrindines funkcijas: Pridėkite elementą, ištrinkite elementą ir pakeiskite masyvo dydį.
Pridėkite elementą į dinaminį masyvą
Dinaminiame masyve galime sukurti fiksuoto dydžio masyvą, jei į masyvą reikia įtraukti daugiau elementų. Paprastai sukuriamas naujas dvigubo dydžio masyvas. Po to jis nukopijuoja visus elementus į naujai sukurtą masyvą. Mes naudojame tokį metodą:
Ištrinkite elementą iš dinaminio masyvo
Jei norime pašalinti elementą iš masyvo nurodytu indeksu, naudojame pašalintiAt(i) metodas. Metodas analizuoja to elemento, kurį norime ištrinti, indekso numerį. Ištrynus elementą, jis perkelia likusius elementus (elementus, kurie yra ištrinto elemento dešinėje) nuo nurodyto indekso numerio į kairę. Taip pat naudojame pašalinimo () metodą, kuris ištrina elementą iš masyvo pabaigos. Perkėlus elementus, jis saugomas 0 paskutinės stichijos rūmuose. Supraskime tai per pavyzdį, kaip parodyta toliau pateiktame paveikslėlyje.
Dinaminio masyvo dydžio keitimas Java
Turime pakeisti masyvo dydį dviem scenarijais, jei:
kokia kolekcija java
- Masyvas naudoja daugiau atminties nei reikia.
- Masyvas užima visą atmintį ir turime pridėti elementų.
Pirmuoju atveju mes naudojame SrinkSize () būdas pakeisti dydį masyvas . Tai sumažina masyvo dydį. Tai atlaisvina papildomos arba nepanaudotos atminties. Antruoju atveju mes naudojame augtiDydis () būdas pakeisti masyvo dydį. Tai padidina masyvo dydį.
Tai brangi operacija, nes reikia didesnio masyvo ir nukopijuoja visus elementus iš ankstesnio masyvo, po to grąžina naują masyvą.
Tarkime, kad aukščiau pateiktame masyve reikia pridėti dar šešis elementus ir masyve nebelieka atminties elementams saugoti. Tokiais atvejais masyvą išauginame naudodami augtiDydis () metodas.
Inicijuokite dinaminį masyvą
Dinaminio masyvo inicijavimas yra toks pat kaip ir statinio masyvo. Apsvarstykite šią „Java“ programą, kuri inicijuoja dinaminį masyvą.
InitializeDynamicArray.java
java tipo kintamasis
public class InitializeDynamicArray { public static void main(String[] args) { //declaring array int array[]; //initialize an array array= new int[6]; //adding elements to the array array[0] = 34; array[1] = 90; array[2] = 12; array[3] = 22; array[4] = 9; array[5] = 27; System.out.print('Elements of Array are: '); //iteraton over the array for(int i=0; i <array.length ; i++) { system.out.print(array[i] +' '); } < pre> <p> <strong>Output:</strong> </p> <pre> Elements of Array are: 34 90 12 22 9 27 </pre> <p>Let's implement the operations in a Java program that we have discussed above.</p> <p> <strong>DynamicArrayExample1.java</strong> </p> <pre> public class DynamicArrayExample1 { private int array[]; private int count; private int sizeofarray; //creating a constructor of the class that initializes the values public DynamicArrayExample1() { array = new int[1]; count = 0; sizeofarray = 1; } //creating a function that appends an element at the end of the array public void addElement(int a) { //compares if the number of elements is equal to the size of the array or not if (count == sizeofarray) { //invoking the growSize() method that creates an array of double size growSize(); } //appens an element at the end of the array array[count] = a; count++; } //function that creates an array of double size public void growSize() { //declares a temp[] array int temp[] = null; if (count == sizeofarray) { //initialize a double size array of array temp = new int[sizeofarray * 2]; { for (int i = 0; i <sizeofarray; i++) { copies all the elements of old array temp[i]="array[i];" } sizeofarray="sizeofarray" * 2; creating a function that deletes an element at specified index public void addelementat(int index, int a) compare size with number if not equal grows (count="=" sizeofarray) invoking growsize() method growsize(); for (int i="count" - 1;>= index; i--) { //shifting all the elements to the left from the specified index array[i + 1] = array[i]; } //inserts an element at the specified index array[index] = a; count++; } public static void main(String[] args) { DynamicArrayExample1 da = new DynamicArrayExample1(); //adding elements to the array da.addElement(12); da.addElement(22); da.addElement(35); da.addElement(47); da.addElement(85); da.addElement(26); da.addElement(70); da.addElement(81); da.addElement(96); da.addElement(54); System.out.println('Elements of the array:'); //iterate over the array for accessing the elements for (int i = 0; i <da.sizeofarray; 5 99 i++) { system.out.print(da.array[i] + ' '); } system.out.println(); determines and prints the size number of elements array system.out.println('size array: da.sizeofarray); system.out.println('no. in da.count); invoking method to add an element at specified index da.addelementat(5, 99); where is be system.out.println(' elements after adding 5:'); iterate over for accessing (int i="0;" < da.sizeofarray; pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/02/dynamic-array-java-6.webp" alt="Dynamic Array in Java"> <p>Let's shrink the array, delete the last element, and a specified element from the array.</p> <p> <strong>DynamicArrayExample2.java</strong> </p> <pre> public class DynamicArrayExample2 { private int array[]; private int count; private int sizeofarray; //creating a constructor of the class that initializes the values public DynamicArrayExample2() { array = new int[1]; count = 0; sizeofarray = 1; } //creating a function that appends an element at the end of the array public void addElement(int a) { //compares if the number of elements is equal to the size of the array or not if (count == sizeofarray) { //invoking the growSize() method that creates an array of double size growSize(); } //appens an element at the end of the array array[count] = a; count++; } //function that creates an array of double size public void growSize() { //declares a temp[] array int temp[] = null; if (count == sizeofarray) { //initialize a double size array of array temp = new int[sizeofarray * 2]; { for (int i = 0; i <sizeofarray; i++) { copies all the elements of old array temp[i]="array[i];" } sizeofarray="sizeofarray" * 2; method removes unused space public void shrinksize() declares a temp[] int if (count> 0) { //creates an array of the size equal to the count i.e. number of elements the array have temp = new int[count]; for (int i = 0; i <count; i++) { copies all the elements of old array temp[i]="array[i];" } sizeofarray="count;" creating a function that removes last for public void removeelement() if (count> 0) { array[count - 1] = 0; count--; } } //creating a function that delets an element from the specified index public void removeElementAt(int index) { if (count > 0) { for (int i = index; i <count 7 - 1; i++) { shifting all the elements to left from specified index array[i]="array[i" + 1]; } array[count 1]="0;" count--; public static void main(string[] args) dynamicarrayexample2 da="new" dynamicarrayexample2(); adding array da.addelement(12); da.addelement(22); da.addelement(35); da.addelement(47); da.addelement(85); da.addelement(26); da.addelement(70); da.addelement(81); da.addelement(96); da.addelement(54); system.out.println('elements of array:'); iterate over for accessing (int i="0;" < da.sizeofarray; system.out.print(da.array[i] ' '); system.out.println(); determines and prints size number system.out.println('size array: da.sizeofarray); system.out.println('no. in da.count); invoking method delete last element da.removeelement(); after deleting system.out.print(' elements element: system.out.print('no. da.count+' '); that deletes an da.removeelementat(7); at 7: pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/02/dynamic-array-java-7.webp" alt="Dynamic Array in Java"> <hr></count></count;></sizeofarray;></pre></da.sizeofarray;></sizeofarray;></pre></array.length>
Įdiegkime anksčiau aptartas operacijas Java programoje.
DynamicArrayExample1.java
public class DynamicArrayExample1 { private int array[]; private int count; private int sizeofarray; //creating a constructor of the class that initializes the values public DynamicArrayExample1() { array = new int[1]; count = 0; sizeofarray = 1; } //creating a function that appends an element at the end of the array public void addElement(int a) { //compares if the number of elements is equal to the size of the array or not if (count == sizeofarray) { //invoking the growSize() method that creates an array of double size growSize(); } //appens an element at the end of the array array[count] = a; count++; } //function that creates an array of double size public void growSize() { //declares a temp[] array int temp[] = null; if (count == sizeofarray) { //initialize a double size array of array temp = new int[sizeofarray * 2]; { for (int i = 0; i <sizeofarray; i++) { copies all the elements of old array temp[i]="array[i];" } sizeofarray="sizeofarray" * 2; creating a function that deletes an element at specified index public void addelementat(int index, int a) compare size with number if not equal grows (count="=" sizeofarray) invoking growsize() method growsize(); for (int i="count" - 1;>= index; i--) { //shifting all the elements to the left from the specified index array[i + 1] = array[i]; } //inserts an element at the specified index array[index] = a; count++; } public static void main(String[] args) { DynamicArrayExample1 da = new DynamicArrayExample1(); //adding elements to the array da.addElement(12); da.addElement(22); da.addElement(35); da.addElement(47); da.addElement(85); da.addElement(26); da.addElement(70); da.addElement(81); da.addElement(96); da.addElement(54); System.out.println('Elements of the array:'); //iterate over the array for accessing the elements for (int i = 0; i <da.sizeofarray; 5 99 i++) { system.out.print(da.array[i] + \' \'); } system.out.println(); determines and prints the size number of elements array system.out.println(\'size array: da.sizeofarray); system.out.println(\'no. in da.count); invoking method to add an element at specified index da.addelementat(5, 99); where is be system.out.println(\' elements after adding 5:\'); iterate over for accessing (int i="0;" < da.sizeofarray; pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/02/dynamic-array-java-6.webp" alt="Dynamic Array in Java"> <p>Let's shrink the array, delete the last element, and a specified element from the array.</p> <p> <strong>DynamicArrayExample2.java</strong> </p> <pre> public class DynamicArrayExample2 { private int array[]; private int count; private int sizeofarray; //creating a constructor of the class that initializes the values public DynamicArrayExample2() { array = new int[1]; count = 0; sizeofarray = 1; } //creating a function that appends an element at the end of the array public void addElement(int a) { //compares if the number of elements is equal to the size of the array or not if (count == sizeofarray) { //invoking the growSize() method that creates an array of double size growSize(); } //appens an element at the end of the array array[count] = a; count++; } //function that creates an array of double size public void growSize() { //declares a temp[] array int temp[] = null; if (count == sizeofarray) { //initialize a double size array of array temp = new int[sizeofarray * 2]; { for (int i = 0; i <sizeofarray; i++) { copies all the elements of old array temp[i]="array[i];" } sizeofarray="sizeofarray" * 2; method removes unused space public void shrinksize() declares a temp[] int if (count> 0) { //creates an array of the size equal to the count i.e. number of elements the array have temp = new int[count]; for (int i = 0; i <count; i++) { copies all the elements of old array temp[i]="array[i];" } sizeofarray="count;" creating a function that removes last for public void removeelement() if (count> 0) { array[count - 1] = 0; count--; } } //creating a function that delets an element from the specified index public void removeElementAt(int index) { if (count > 0) { for (int i = index; i <count 7 - 1; i++) { shifting all the elements to left from specified index array[i]="array[i" + 1]; } array[count 1]="0;" count--; public static void main(string[] args) dynamicarrayexample2 da="new" dynamicarrayexample2(); adding array da.addelement(12); da.addelement(22); da.addelement(35); da.addelement(47); da.addelement(85); da.addelement(26); da.addelement(70); da.addelement(81); da.addelement(96); da.addelement(54); system.out.println(\'elements of array:\'); iterate over for accessing (int i="0;" < da.sizeofarray; system.out.print(da.array[i] \' \'); system.out.println(); determines and prints size number system.out.println(\'size array: da.sizeofarray); system.out.println(\'no. in da.count); invoking method delete last element da.removeelement(); after deleting system.out.print(\' elements element: system.out.print(\'no. da.count+\' \'); that deletes an da.removeelementat(7); at 7: pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/02/dynamic-array-java-7.webp" alt="Dynamic Array in Java"> <hr></count></count;></sizeofarray;></pre></da.sizeofarray;></sizeofarray;>