Maison > Java > javaDidacticiel > le corps du texte

Le fonctionnement interne d'ArrayList en Java

WBOY
Libérer: 2023-09-16 16:05:08
avant
1394 Les gens l'ont consulté

Le fonctionnement interne dArrayList en Java

ArrayList est une classe de Java Collection Framework qui implémente l'interface List. Il s'agit d'une structure linéaire qui stocke et accède à chaque élément de manière séquentielle, car elle utilise en interne un tableau dynamique pour stocker ses éléments. Comme les tableaux, il permet également de stocker des éléments en double. Un tableau dynamique fait ici référence à un tableau qui peut s'agrandir et se réduire selon les besoins. Dans cet article, nous explorerons le fonctionnement interne d'une ArrayList pour montrer comment elle stocke ses éléments et se redimensionne pendant les opérations.

Comment ArrayList fonctionne en interne en Java ?

La plupart d'entre nous savent que les tableaux standard ont une longueur fixe. Une fois les tableaux déclarés et initialisés, ils ne peuvent ni s'agrandir ni se réduire, ce qui signifie que nous ne pouvons pas ajouter d'éléments supplémentaires après avoir spécifié leur taille. Cependant, dans certains cas, le développeur peut ne pas connaître la taille de tableau requise avant l'exécution. Dans ce cas, ArrayList est une meilleure alternative au tableau, qui peut augmenter ou diminuer dynamiquement le nombre d'éléments.

Constructeur de ArrayList

Pour utiliser ArrayList dans notre programme, nous devons d'abord créer une instance de la classe ArrayList. À cette fin, Java fournit trois constructeurs différents mentionnés ci-dessous :

  • ArrayList() : Cela créera une ArrayList vide.

  • ArrayList(intcapacityInitial) : Dans ce constructeur, nous pouvons transmettre la capacité initiale du nombre d'éléments que l'ArrayList peut contenir. Une fois que le nombre d’éléments atteint la capacité initiale, la capacité est automatiquement augmentée.

  • ArrayList(Collection collectionName) : Nous pouvons également utiliser ce constructeur pour créer une ArrayList à partir d'une autre collection.

Pourquoi ArrayList est-il dynamique ?

Lorsque nous ajoutons un élément à ArrayList à l'aide de la méthode intégrée « add() », il vérifie d'abord s'il y a suffisamment d'espace dans le tableau pour stocker le nouvel élément. S'il est présent, il attribue le nouvel élément au prochain index disponible dans le tableau. S'il n'y a pas assez de place pour le nouvel élément, il crée un nouveau tableau avec une capacité plus grande, généralement 1,5 fois la capacité actuelle, puis copie tous les éléments existants de l'ancien tableau vers le nouveau tableau et attribue les nouveaux éléments au suivant. index disponible d'un élément dans le tableau nouvellement créé.

Lorsque nous supprimons un élément d'une ArrayList à l'aide de la méthode intégrée "remove()", cela déplace tous les éléments après l'élément supprimé d'un index vers la gauche. Cependant, cela ne réduit pas la baie immédiatement, mais elle peut diminuer plus tard si la taille est trop petite par rapport à la capacité.

Discutons de quelques exemples pour mieux comprendre les points évoqués ci-dessus.

Exemple 1

L'exemple suivant montre comment créer et imprimer des éléments d'une ArrayList en Java.

import java.util.*;
public class Example1 {
   public static void main(String[] args) {
	   // Creating arraylist 
      ArrayList<Integer> araylist = new ArrayList<Integer>();
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Adding elements in arraylist<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(8);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(5);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(2);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(9);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(2);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(4);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(9);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(7);
<span style="font-size: 11.4844px;">      </span>System.out.println("List of elements: " + araylist);
   }
}
Copier après la connexion

Sortie

List of elements: [8, 5, 2, 9, 2, 4, 9, 7]
Copier après la connexion

Exemple 2

Dans l'exemple ci-dessous, nous allons créer une ArrayList avec une capacité initiale et essayer d'ajouter des éléments au-delà de la capacité spécifiée pour montrer qu'une ArrayList peut croître dynamiquement.

import java.util.*;
public class Example2 {
   public static void main(String[] args) {
      // Creating arraylist with initial capacity of 5
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>ArrayList<Integer> araylist = new ArrayList<Integer>(5);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Adding elements in arraylist
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(80); // 1
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(15); // 2
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(23); // 3
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(9); // 4
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(12); // 5
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// adding more elements 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(14);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(91);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(74);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>System.out.println("List of elements: " + araylist);
   }
}
Copier après la connexion

Sortie

List of elements: [80, 15, 23, 9, 12, 14, 91, 74]
Copier après la connexion

Exemple 3

Dans cet exemple, nous allons créer une ArrayList à partir d'un HashSet pour démontrer que des éléments d'un ensemble peuvent être ajoutés à une ArrayList. En interne, il vérifie d'abord la taille de la collection passée, puis stocke les éléments dans la ArrayList donnée à l'aide de la méthode "Arrays.copyOf()".

import java.util.*;
public class Example3 {
   public static void main(String[] args) {
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Creating a Set 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>HashSet<Integer> setH = new HashSet<>();
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Adding elements in the Set
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(80); 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(15); 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(23); 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(9); 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(12); 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(14);<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(91);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>setH.add(74);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Passing the Set to the ArrayList
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>ArrayList<Integer> araylist = new ArrayList<>(setH);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// printing the result
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>System.out.println("List of elements: " + araylist);
   }
}
Copier après la connexion

Sortie

List of elements: [80, 23, 9, 74, 91, 12, 14, 15]
Copier après la connexion

Conclusion

Nous avons commencé cet article en définissant ArrayList et dans la section suivante, nous avons discuté de son fonctionnement interne. ArrayList est un tableau redimensionnable avec une capacité par défaut de 10 qui peut être augmentée lorsque nous y ajoutons plus d'éléments. On peut également préciser la capacité initiale dans le constructeur de l'ArrayList lors de sa création.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal