logo

Tableau dynamique en Java

Un tableau est une taille fixe, homogène Structure de données . La limitation des tableaux est qu’ils sont de taille fixe. Cela signifie que nous devons spécifier le nombre d'éléments lors de la déclaration du tableau. Ici, une question se pose : que se passe-t-il si nous voulons insérer un élément et qu'il n'y a plus d'espace pour le nouvel élément ? Ici, la notion de tableau dynamique vient à l'existence. Il dépense la taille du tableau de manière dynamique.

Dans cette section, nous comprendrons qu'est-ce qu'un tableau dynamique, fonctionnalités du tableau dynamique, comment redimensionner un tableau dynamique, et comment implémenter un tableau dynamique en Java .

Qu'est-ce qu'un tableau dynamique ?

Le tableau dynamique est un taille variable lister la structure des données. Il s'agrandit automatiquement lorsque l'on essaie d'insérer un élément s'il n'y a plus d'espace pour le nouvel élément. Cela nous permet d'ajouter et de supprimer des éléments. Il alloue de la mémoire au moment de l'exécution à l'aide du tas. Il peut changer de taille pendant l'exécution.

Dans Java , Liste des tableaux est une implémentation redimensionnable. Il implémente l'interface List et fournit toutes les méthodes liées aux opérations de liste. La force du tableau dynamique est :

  • Recherche rapide
  • Taille variable
  • Compatible avec le cache

Fonctionnement du tableau dynamique

Dans le tableau dynamique, les éléments sont stockés de manière contiguë depuis le début du tableau et l'espace restant reste inutilisé. Nous pouvons ajouter les éléments jusqu'à ce que l'espace réservé soit complètement consommé. Lorsque l'espace réservé est consommé et nécessite l'ajout de certains éléments. Dans un tel cas, la taille du tableau de taille fixe doit être augmentée. Notez qu'avant d'ajouter l'élément, nous allouons un tableau plus grand, copions les éléments du tableau et renvoyons le tableau nouvellement créé.

Une autre façon d'ajouter un élément consiste à créer d'abord une fonction qui crée un nouveau tableau de taille double, copie tous les éléments de l'ancien tableau et renvoie le nouveau tableau. De même, nous pouvons également réduire la taille du tableau dynamique.

Taille et capacité

L'initialisation d'un tableau dynamique crée un tableau de taille fixe. Dans la figure suivante, l'implémentation du tableau comporte 10 indices. Nous avons ajouté cinq éléments au tableau. Désormais, le tableau sous-jacent a une longueur de cinq. Par conséquent, la longueur de la taille du tableau dynamique est de 5 et sa capacité est de 10. Le tableau dynamique garde une trace du point de terminaison.

Tableau dynamique en Java

Caractéristiques du tableau dynamique

En Java, le tableau dynamique possède trois fonctionnalités clés : Ajoutez un élément, supprimez un élément et redimensionnez un tableau.

Ajouter un élément dans un tableau dynamique

Dans le tableau dynamique, nous pouvons créer un tableau de taille fixe si nous avons besoin d'ajouter des éléments supplémentaires dans le tableau. Habituellement, cela crée un nouveau tableau de taille double. Après cela, il copie tous les éléments dans le tableau nouvellement créé. Nous utilisons l'approche suivante :

Tableau dynamique en Java

Supprimer un élément d'un tableau dynamique

Si nous voulons supprimer un élément du tableau à l'index spécifié, nous utilisons le supprimerAt(i) méthode. La méthode analyse le numéro d'index de cet élément que nous voulons supprimer. Après avoir supprimé l'élément, il décale les éléments restants (éléments situés à droite de l'élément supprimé) vers la gauche à partir du numéro d'index spécifié. Nous utilisons également la méthode Remove() qui supprime un élément à la fin du tableau. Après avoir déplacé les éléments, il stocke 0 au palais du dernier élément. Comprenons-le à travers un exemple, comme nous l'avons montré dans la figure suivante.

Tableau dynamique en Java

Redimensionner un tableau dynamique en Java

Nous devons redimensionner un tableau dans deux scénarios si :

  • Le tableau utilise plus de mémoire que nécessaire.
  • Le tableau occupe toute la mémoire et nous devons ajouter des éléments.

Dans le premier cas, nous utilisons le srinkSize() méthode pour redimensionner le tableau . Cela réduit la taille du tableau. Cela libère la mémoire supplémentaire ou inutilisée. Dans le deuxième cas, nous utilisons le grandirTaille() méthode pour redimensionner le tableau. Cela augmente la taille du tableau.

C'est une opération coûteuse car elle nécessite un tableau plus grand et copie tous les éléments du tableau précédent, puis renvoie le nouveau tableau.

Tableau dynamique en Java

Supposons que dans le tableau ci-dessus, il soit nécessaire d'ajouter six éléments supplémentaires et que, dans le tableau, il ne reste plus de mémoire pour stocker les éléments. Dans de tels cas, nous agrandissons le tableau en utilisant le grandirTaille() méthode.

conversion de chaîne en int java
Tableau dynamique en Java

Initialiser un tableau dynamique

L'initialisation du tableau dynamique est la même que celle du tableau statique. Considérez le programme Java suivant qui initialise un tableau dynamique.

InitialiserDynamicArray.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>

Implémentons les opérations dans un programme Java dont nous avons discuté ci-dessus.

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