Een array heeft een vaste grootte en is homogeen data structuur . De beperking van arrays is dat ze een vaste grootte hebben. Het betekent dat we het aantal elementen moeten specificeren tijdens het declareren van de array. Hier rijst de vraag: wat als we een element willen invoegen en er geen ruimte meer over is voor het nieuwe element? Hier het concept van dynamische reeks ontstaat. Het vergroot de grootte van de array dynamisch.
In dit gedeelte zullen we het begrijpen wat is een dynamische array, kenmerken van de dynamische array, hoe u de grootte van een dynamische array kunt wijzigen, En hoe dynamische array in Java te implementeren .
leegte 0
Wat is een dynamische array?
De dynamische array is a variabele grootte lijst met gegevensstructuur. Het groeit automatisch wanneer we een element proberen in te voegen als er geen ruimte meer over is voor het nieuwe element. Hiermee kunnen we elementen toevoegen en verwijderen. Het wijst geheugen tijdens runtime toe met behulp van de heap. Het kan tijdens de looptijd van formaat veranderen.
In Java , ArrayLijst is een aanpasbare implementatie. Het implementeert de Lijst-interface en biedt alle methoden die verband houden met de lijstbewerkingen. De kracht van de dynamische array is:
- Snel opzoeken
- Variabele maat
- Cache-vriendelijk
Werking van dynamische array
In de dynamische array worden de elementen vanaf het begin van de array aaneengesloten opgeslagen en blijft de resterende ruimte ongebruikt. We kunnen de elementen toevoegen totdat de gereserveerde ruimte volledig is verbruikt. Wanneer de gereserveerde ruimte wordt verbruikt en er enkele elementen moeten worden toegevoegd. In een dergelijk geval moet de array met een vaste grootte in omvang worden vergroot. Houd er rekening mee dat voordat we het element toevoegen, we een grotere array toewijzen, de elementen uit de array kopiëren en de nieuw gemaakte array retourneren.
Java-tekenreeks naar int-conversie
Een andere manier om een element toe te voegen is door eerst een functie te maken die een nieuwe array van dubbele grootte creëert, alle elementen uit de oude array kopieert en de nieuwe array retourneert. Op dezelfde manier kunnen we ook de grootte van de dynamische array verkleinen.
Grootte versus capaciteit
De initialisatie van een dynamische array creëert een array met een vaste grootte. In de volgende afbeelding heeft de array-implementatie 10 indices. We hebben vijf elementen aan de array toegevoegd. De onderliggende array heeft nu een lengte van vijf. Daarom is de lengte van de dynamische array 5 en de capaciteit 10. De dynamische array houdt het eindpunt bij.
Kenmerken van dynamische array
In Java heeft de dynamische array drie belangrijke kenmerken: Voeg een element toe, verwijder een element en wijzig het formaat van een array.
Element toevoegen aan een dynamische array
In de dynamische array kunnen we een array met een vaste grootte maken als we wat meer elementen aan de array moeten toevoegen. Meestal wordt er een nieuwe array van dubbele grootte gemaakt. Daarna kopieert het alle elementen naar de nieuw gemaakte array. Wij hanteren de volgende aanpak:
jquery deze klik
Verwijder een element uit een dynamische array
Als we een element uit de array op de opgegeven index willen verwijderen, gebruiken we de verwijderAt(i) methode. De methode parseert het indexnummer van het element dat we willen verwijderen. Nadat het element is verwijderd, worden de overige elementen (elementen die rechts van het verwijderde element staan) naar links verschoven ten opzichte van het opgegeven indexnummer. We gebruiken ook de methode remove() die een element van het einde van de array verwijdert. Na het verschuiven van de elementen wordt het opgeslagen 0 in het paleis van het laatste element. Laten we het begrijpen aan de hand van een voorbeeld, zoals we in de volgende afbeelding hebben laten zien.
Het formaat van een dynamische array in Java wijzigen
We moeten het formaat van een array in twee scenario's wijzigen als:
- De array gebruikt meer geheugen dan nodig is.
- De array neemt al het geheugen in beslag en we moeten elementen toevoegen.
In het eerste geval gebruiken we de verkleinenSize() methode om het formaat te wijzigen reeks . Het verkleint de grootte van de array. Het maakt het extra of ongebruikte geheugen vrij. In het tweede geval gebruiken we de groeigrootte() methode om de grootte van de array te wijzigen. Het vergroot de grootte van de array.
Het is een dure operatie omdat er een grotere array voor nodig is en alle elementen uit de vorige array worden gekopieerd, waarna de nieuwe array wordt geretourneerd.
Stel dat het in de bovenstaande array nodig is om nog zes elementen toe te voegen en dat er in de array geen geheugen meer over is om elementen op te slaan. In dergelijke gevallen laten we de array groeien met behulp van de groeigrootte() methode.
in Java-regex
Initialiseer een dynamische array
De initialisatie van de dynamische array is hetzelfde als die van de statische array. Beschouw het volgende Java-programma dat een dynamische array initialiseert.
InitialiseerDynamicArray.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>
Laten we de bewerkingen implementeren in een Java-programma dat we hierboven hebben besproken.
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;>