Taulukko on kiinteän kokoinen, homogeeninen tietorakenne . Taulukkojen rajoitus on, että niiden koko on kiinteä. Se tarkoittaa, että meidän on määritettävä elementtien lukumäärä taulukon ilmoittamisen aikana. Tässä herää kysymys, että entä jos haluamme lisätä elementin ja uudelle elementille ei ole enää tilaa? Tässä käsite dynaaminen matriisi syntyy olemassaoloon. Se kuluttaa taulukon kokoa dynaamisesti.
Tässä osiossa ymmärrämme mikä on dynaaminen taulukko, dynaamisen taulukon ominaisuudet, kuinka muuttaa dynaamisen taulukon kokoa, ja kuinka toteuttaa dynaaminen taulukko Javassa .
Mikä on dynaaminen taulukko?
Dynaaminen matriisi on a vaihteleva koko listan tietorakenne. Se kasvaa automaattisesti, kun yritämme lisätä elementin, jos uudelle elementille ei ole enää tilaa. Sen avulla voimme lisätä ja poistaa elementtejä. Se varaa muistia ajon aikana keon avulla. Se voi muuttaa kokoaan ajon aikana.
Sisään Java , ArrayList on muutettava toteutus. Se toteuttaa List-rajapinnan ja tarjoaa kaikki listatoimintoihin liittyvät menetelmät. Dynaamisen taulukon vahvuus on:
- Pikahaku
- Muuttuva koko
- Välimuistiystävällinen
Dynaamisen taulukon toiminta
Dynaamisessa taulukossa elementit tallennetaan peräkkäin taulukon alusta alkaen ja jäljellä oleva tila jää käyttämättä. Voimme lisätä elementtejä, kunnes varatut välit on kulutettu kokonaan. Kun varattu tila on kulutettu ja vaaditaan lisäämään joitain elementtejä. Tällaisessa tapauksessa kiinteän kokoisen taulukon kokoa on suurennettava. Huomaa, että ennen elementin liittämistä varaamme suuremman taulukon, kopioimme elementit taulukosta ja palautamme juuri luodun taulukon.
Toinen tapa lisätä elementti on luoda ensin funktio, joka luo uuden kaksinkertaisen kokoisen taulukon, kopioi kaikki elementit vanhasta taulukosta ja palauttaa uuden taulukon. Vastaavasti voimme myös pienentää dynaamisen taulukon kokoa.
Koko vs. kapasiteetti
Dynaamisen taulukon alustus luo kiinteän kokoisen taulukon. Seuraavassa kuvassa taulukkototeutuksessa on 10 indeksiä. Olemme lisänneet taulukkoon viisi elementtiä. Nyt taustalla olevan taulukon pituus on viisi. Siksi dynaamisen taulukon koon pituus on 5 ja sen kapasiteetti on 10. Dynaaminen matriisi seuraa päätepistettä.
Dynaamisen taulukon ominaisuudet
Javassa dynaamisella taulukolla on kolme keskeistä ominaisuutta: Lisää elementti, poista elementti ja muuta taulukon kokoa.
Lisää elementti dynaamiseen taulukkoon
Dynaamisessa taulukossa voimme luoda kiinteän kokoisen taulukon, jos joudumme lisäämään taulukkoon joitain elementtejä. Yleensä se luo uuden kaksinkertaisen kokoisen matriisin. Sen jälkeen se kopioi kaikki elementit juuri luotuun taulukkoon. Käytämme seuraavaa lähestymistapaa:
Poista elementti dynaamisesta taulukosta
Jos haluamme poistaa elementin taulukosta määritetyssä indeksissä, käytämme poistaAt(i) menetelmä. Menetelmä jäsentää sen elementin indeksinumeron, jonka haluamme poistaa. Kun elementti on poistettu, se siirtää jäljellä olevat elementit (elementit, jotka ovat oikealla poistetun elementin kohdalla) vasemmalle määritetystä indeksinumerosta. Käytämme myös remove()-menetelmää, joka poistaa elementin taulukon lopusta. Elementtien siirtämisen jälkeen se tallentaa 0 viimeisen elementin palatsissa. Ymmärretään se esimerkin avulla, kuten olemme osoittaneet seuraavassa kuvassa.
Dynaamisen taulukon koon muuttaminen Javassa
Meidän on muutettava taulukon kokoa kahdessa tilanteessa, jos:
- Taulukko käyttää ylimääräistä muistia kuin tarvitaan.
- Taulukko vie kaiken muistin ja meidän on lisättävä elementtejä.
Ensimmäisessä tapauksessa käytämme srinkSize() tapa muuttaa kokoa joukko . Se pienentää taulukon kokoa. Se vapauttaa ylimääräistä tai käyttämätöntä muistia. Toisessa tapauksessa käytämme kasvaa koko() tapa muuttaa taulukon kokoa. Se kasvattaa taulukon kokoa.
Se on kallis operaatio, koska se vaatii isomman taulukon ja kopioi kaikki elementit edellisestä taulukosta, minkä jälkeen palauttaa uuden taulukon.
Oletetaan, että yllä olevaan taulukkoon on lisättävä kuusi elementtiä ja taulukossa ei ole enää muistia elementtien tallentamiseen. Tällaisissa tapauksissa kasvatamme taulukkoa käyttämällä kasvaa koko() menetelmä.
Alusta dynaaminen taulukko
Dynaamisen taulukon alustus on sama kuin staattisen taulukon. Harkitse seuraavaa Java-ohjelmaa, joka alustaa dynaamisen taulukon.
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('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>
Toteutetaan edellä käsitellyt toiminnot Java-ohjelmassa.
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;>