logo

Dinamiskais masīvs Java

Masīvs ir fiksēta izmēra, viendabīgs datu struktūra . Masīvu ierobežojums ir tāds, ka tiem ir noteikts izmērs. Tas nozīmē, ka mums ir jānorāda elementu skaits, deklarējot masīvu. Šeit rodas jautājums, ko darīt, ja mēs vēlamies ievietot elementu un jaunajam elementam vairs neatliek vietas? Šeit ir jēdziens dinamiskais masīvs rodas. Tas dinamiski iztērē masīva lielumu.

Šajā sadaļā mēs sapratīsim kas ir dinamiskais masīvs, dinamiskā masīva funkcijas, kā mainīt dinamiskā masīva izmērus, un kā ieviest dinamisko masīvu Java .

Kas ir dinamiskais masīvs?

Dinamiskais masīvs ir a mainīgs izmērs saraksta datu struktūra. Tas tiek automātiski palielināts, kad mēģinām ievietot elementu, ja jaunajam elementam vairs nav vietas. Tas ļauj mums pievienot un noņemt elementus. Tas piešķir atmiņu izpildes laikā, izmantojot kaudzi. Darbības laikā tas var mainīt izmēru.

In Java , ArrayList ir maināma izmēra ieviešana. Tas ievieš saraksta saskarni un nodrošina visas metodes, kas saistītas ar saraksta darbībām. Dinamiskā masīva stiprums ir:

  • Ātrā meklēšana
  • Mainīgs izmērs
  • Kešatmiņai draudzīgs

Dinamiskā masīva darbība

Dinamiskajā masīvā elementi tiek glabāti blakus no masīva sākuma, un atlikušā vieta paliek neizmantota. Mēs varam pievienot elementus, līdz rezervētie attālumi ir pilnībā iztērēti. Kad rezervētā vieta ir aizņemta un ir jāpievieno daži elementi. Šādā gadījumā ir jāpalielina fiksēta izmēra masīvs. Ņemiet vērā, ka pirms elementa pievienošanas mēs piešķiram lielāku masīvu, nokopējam elementus no masīva un atgriežam jaunizveidoto masīvu.

Vēl viens veids, kā pievienot elementu, ir tas, ka vispirms izveidojiet funkciju, kas izveido jaunu dubulta izmēra masīvu, nokopē visus elementus no vecā masīva un atgriež jauno masīvu. Līdzīgi mēs varam arī samazināt dinamiskā masīva lielumu.

Izmērs pret ietilpību

Dinamiskā masīva inicializācija rada fiksēta izmēra masīvu. Nākamajā attēlā masīva ieviešanai ir 10 indeksi. Mēs esam pievienojuši masīvam piecus elementus. Tagad pamatā esošā masīva garums ir pieci. Tāpēc dinamiskā masīva lieluma garums ir 5 un tā ietilpība ir 10. Dinamiskais masīvs seko gala punktam.

Dinamiskais masīvs Java

Dinamiskā masīva iezīmes

Java dinamiskajam masīvam ir trīs galvenās funkcijas: Pievienojiet elementu, izdzēsiet elementu un mainiet masīva izmēru.

Pievienojiet elementu dinamiskajā masīvā

Dinamiskajā masīvā mēs varam izveidot fiksēta izmēra masīvu, ja masīvā ir jāpievieno vēl daži elementi. Parasti tas izveido jaunu dubulta izmēra masīvu. Pēc tam tas visus elementus kopē jaunizveidotajā masīvā. Mēs izmantojam šādu pieeju:

Dinamiskais masīvs Java

Elementa dzēšana no dinamiskā masīva

Ja mēs vēlamies noņemt elementu no masīva norādītajā indeksā, mēs izmantojam noņemtAt(i) metodi. Metode parsē tā elementa indeksa numuru, kuru vēlamies dzēst. Pēc elementa dzēšanas tas pārvieto atlikušos elementus (elementus, kas atrodas pa labi uz dzēsto elementu) no norādītā indeksa numura pa kreisi. Mēs izmantojam arī metodi remove(), kas izdzēš elementu no masīva beigām. Pēc elementu pārvietošanas tas saglabājas 0 pēdējā elementa pilī. Sapratīsim to, izmantojot piemēru, kā parādīts nākamajā attēlā.

Dinamiskais masīvs Java

Dinamiskā masīva izmēra maiņa Java

Mums ir jāmaina masīva lielums divos gadījumos, ja:

  • Masīvs izmanto papildu atmiņu, nekā nepieciešams.
  • Masīvs aizņem visu atmiņu, un mums ir jāpievieno elementi.

Pirmajā gadījumā mēs izmantojam SrinkSize() metode izmēra maiņai masīvs . Tas samazina masīva lielumu. Tas atbrīvo papildu vai neizmantoto atmiņu. Otrajā gadījumā mēs izmantojam augtSize() metode masīva izmēra maiņai. Tas palielina masīva lielumu.

Tā ir dārga darbība, jo tai ir nepieciešams lielāks masīvs un visi elementi tiek kopēti no iepriekšējā masīva pēc tam atgriež jauno masīvu.

Dinamiskais masīvs Java

Pieņemsim, ka iepriekš minētajā masīvā ir jāpievieno vēl seši elementi, un masīvā vairs neatliek atmiņas elementu glabāšanai. Šādos gadījumos mēs audzējam masīvu, izmantojot augtSize() metodi.

Dinamiskais masīvs Java

Inicializējiet dinamisko masīvu

Dinamiskā masīva inicializācija ir tāda pati kā statiskā masīva inicializācija. Apsveriet šādu Java programmu, kas inicializē dinamisko masīvu.

InitializeDynamicArray.java

 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(&apos;Elements of Array are: &apos;); //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&apos;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(&apos;Elements of the array:&apos;); //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&apos;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 &gt; 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>

Ieviesīsim iepriekš aprakstītās operācijas Java programmā.

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(&apos;Elements of the array:&apos;); //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&apos;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 &gt; 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;>