logo

Dynamické pole v jazyku Java

Pole má pevnú veľkosť, je homogénne dátová štruktúra . Obmedzenie polí je v tom, že majú pevnú veľkosť. To znamená, že pri deklarovaní poľa musíme určiť počet prvkov. Tu vyvstáva otázka, čo ak chceme vložiť prvok a na nový prvok už nezostane miesto? Tu je koncept dynamické pole vzniká. Dynamicky vynakladá veľkosť poľa.

V tejto časti pochopíme čo je dynamické pole, vlastnosti dynamického poľa, ako zmeniť veľkosť dynamického poľa, a ako implementovať dynamické pole v Jave .

Čo je dynamické pole?

Dynamické pole je a variabilná veľkosť dátovú štruktúru zoznamu. Zväčší sa automaticky, keď sa pokúsime vložiť prvok, ak už pre nový prvok nezostane miesto. Umožňuje nám pridávať a odstraňovať prvky. Prideľuje pamäť v čase spustenia pomocou haldy. Počas prevádzky môže zmeniť svoju veľkosť.

In Java , ArrayList je implementácia s nastaviteľnou veľkosťou. Implementuje rozhranie Zoznam a poskytuje všetky metódy súvisiace s operáciami so zoznamom. Sila dynamického poľa je:

  • Rýchle vyhľadávanie
  • Variabilná veľkosť
  • Priateľský k vyrovnávacej pamäti

Fungovanie dynamického poľa

V dynamickom poli sú prvky uložené súvisle od začiatku poľa a zostávajúci priestor zostáva nevyužitý. Prvky môžeme pridávať, kým sa rezervovaná medzera úplne nespotrebuje. Keď je rezervovaný priestor spotrebovaný a je potrebné pridať nejaké prvky. V takom prípade je potrebné zväčšiť veľkosť poľa s pevnou veľkosťou. Všimnite si, že pred pripojením prvku pridelíme väčšie pole, skopírujeme prvky z poľa a vrátime novovytvorené pole.

Ďalším spôsobom, ako pridať prvok, je najprv vytvoriť funkciu, ktorá vytvorí nové pole dvojnásobnej veľkosti, skopíruje všetky prvky zo starého poľa a vráti nové pole. Podobne môžeme zmenšiť veľkosť dynamického poľa.

Veľkosť vs. kapacita

Inicializácia dynamického poľa vytvorí pole s pevnou veľkosťou. Na nasledujúcom obrázku má implementácia poľa 10 indexov. Do poľa sme pridali päť prvkov. Teraz má základné pole dĺžku päť. Preto je dĺžka dynamického poľa 5 a jeho kapacita 10. Dynamické pole sleduje koncový bod.

Dynamické pole v jazyku Java

Vlastnosti dynamického poľa

V jazyku Java má dynamické pole tri kľúčové vlastnosti: Pridajte prvok, odstráňte prvok a zmeňte veľkosť poľa.

Pridajte prvok do dynamického poľa

V dynamickom poli môžeme vytvoriť pole s pevnou veľkosťou, ak potrebujeme pridať ďalšie prvky do poľa. Zvyčajne vytvorí nové pole dvojnásobnej veľkosti. Potom skopíruje všetky prvky do novovytvoreného poľa. Používame nasledujúci prístup:

Dynamické pole v jazyku Java

Odstráňte prvok z dynamického poľa

Ak chceme odstrániť prvok z poľa na zadanom indexe, použijeme removeAt(i) metóda. Metóda analyzuje indexové číslo prvku, ktorý chceme vymazať. Po vymazaní prvku posunie zostávajúce prvky (prvky, ktoré sú vpravo od vymazaného prvku) doľava od zadaného indexového čísla. Používame aj metódu remove(), ktorá vymaže prvok z konca poľa. Po posunutí prvkov sa uloží 0 v paláci posledného živlu. Pochopme to na príklade, ako sme to ukázali na nasledujúcom obrázku.

vlc stiahnite si videá z youtube
Dynamické pole v jazyku Java

Zmena veľkosti dynamického poľa v jazyku Java

Veľkosť poľa musíme zmeniť v dvoch scenároch, ak:

  • Pole používa dodatočnú pamäť, než je potrebné.
  • Pole zaberá všetku pamäť a musíme pridať prvky.

V prvom prípade použijeme srinkSize() spôsob zmeny veľkosti pole . Zmenšuje veľkosť poľa. Uvoľní dodatočnú alebo nevyužitú pamäť. V druhom prípade použijeme growSize() metóda na zmenu veľkosti poľa. Zväčšuje veľkosť poľa.

Je to nákladná operácia, pretože vyžaduje väčšie pole a skopíruje všetky prvky z predchádzajúceho poľa, potom vráti nové pole.

Dynamické pole v jazyku Java

Predpokladajme, že vo vyššie uvedenom poli je potrebné pridať šesť ďalších prvkov a v poli už nezostane žiadna pamäť na uloženie prvkov. V takýchto prípadoch zväčšujeme pole pomocou growSize() metóda.

Dynamické pole v jazyku Java

Inicializujte dynamické pole

Inicializácia dynamického poľa je rovnaká ako pri statickom poli. Zvážte nasledujúci program Java, ktorý inicializuje dynamické pole.

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>

Implementujme operácie v programe Java, o ktorých sme hovorili vyššie.

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;>