Pole má pevnou velikost, je homogenní datová struktura . Omezení polí je v tom, že mají pevnou velikost. To znamená, že při deklaraci pole musíme určit počet prvků. Zde vyvstává otázka, co když chceme vložit prvek a na nový prvek už nezbývá místo? Zde je koncept dynamické pole vzniká. Dynamicky vynakládá velikost pole.
V této části pochopíme co je dynamické pole, vlastnosti dynamického pole, jak změnit velikost dynamického pole, a jak implementovat dynamické pole v Javě .
Co je dynamické pole?
Dynamické pole je a variabilní velikost datová struktura seznamu. Automaticky roste, když se pokusíme vložit prvek, pokud pro nový prvek nezbývá místo. Umožňuje nám přidávat a odebírat prvky. Přiděluje paměť za běhu pomocí haldy. Během běhu může měnit svou velikost.
window.open javascript
v Jáva , ArrayList je implementace s měnitelnou velikostí. Implementuje rozhraní Seznam a poskytuje všechny metody související s operacemi se seznamy. Síla dynamického pole je:
- Rychlé vyhledání
- Variabilní velikost
- Přátelský ke cache
Práce s dynamickým polem
V dynamickém poli jsou prvky uloženy souvisle od začátku pole a zbývající prostor zůstává nevyužit. Prvky můžeme přidávat, dokud není rezervovaná mezera zcela spotřebována. Když je rezervovaný prostor spotřebován a je nutné přidat nějaké prvky. V takovém případě je třeba pole s pevnou velikostí zvětšit. Všimněte si, že před připojením prvku alokujeme větší pole, zkopírujeme prvky z pole a vrátíme nově vytvořené pole.
globální proměnné js
Dalším způsobem, jak přidat prvek, je nejprve vytvořit funkci, která vytvoří nové pole dvojnásobné velikosti, zkopíruje všechny prvky ze starého pole a vrátí nové pole. Podobně můžeme také zmenšit velikost dynamického pole.
Velikost vs. kapacita
Inicializace dynamického pole vytvoří pole pevné velikosti. Na následujícím obrázku má implementace pole 10 indexů. Do pole jsme přidali pět prvků. Nyní má základní pole délku pět. Proto je délka dynamického pole 5 a jeho kapacita 10. Dynamické pole sleduje koncový bod.
Vlastnosti dynamického pole
V Javě má dynamické pole tři klíčové vlastnosti: Přidejte prvek, odstraňte prvek a změňte velikost pole.
Přidejte prvek do dynamického pole
V dynamickém poli můžeme vytvořit pole pevné velikosti, pokud potřebujeme přidat nějaké další prvky do pole. Obvykle vytvoří nové pole dvojnásobné velikosti. Poté zkopíruje všechny prvky do nově vytvořeného pole. Používáme následující přístup:
Odstraňte prvek z dynamického pole
Pokud chceme odstranit prvek z pole na zadaném indexu, použijeme removeAt(i) metoda. Metoda analyzuje indexové číslo prvku, který chceme odstranit. Po smazání prvku posune zbývající prvky (prvky, které jsou vpravo od smazaného prvku) doleva od zadaného indexového čísla. Používáme také metodu remove(), která odstraní prvek z konce pole. Po posunutí prvků se uloží 0 v paláci posledního živlu. Pojďme to pochopit na příkladu, jak jsme si ukázali na následujícím obrázku.
java int jako řetězec
Změna velikosti dynamického pole v Javě
Potřebujeme změnit velikost pole ve dvou scénářích, pokud:
- Pole používá paměť navíc, než je potřeba.
- Pole zabírá veškerou paměť a musíme přidat prvky.
V prvním případě použijeme velikost srinkSize() způsob změny velikosti pole . Zmenšuje velikost pole. Uvolní nadbytečnou nebo nevyužitou paměť. V druhém případě použijeme growSize() metoda pro změnu velikosti pole. Zvětší velikost pole.
Je to nákladná operace, protože vyžaduje větší pole a zkopíruje všechny prvky z předchozího pole, poté vrátí nové pole.
pokud jinak, když java
Předpokládejme, že ve výše uvedeném poli je nutné přidat dalších šest prvků a v poli nezbývá žádná paměť pro uložení prvků. V takových případech rozšíříme pole pomocí growSize() metoda.
Inicializujte dynamické pole
Inicializace dynamického pole je stejná jako u statického pole. Zvažte následující program Java, který 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('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>
Implementujme operace v programu Java, o kterých jsme hovořili výše.
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;>