Dans cet article nous étudierons une possible implémentation (simpliste) d’une array list. Cette structure de données est également appelée tableau dynamique. Cet article sera rédigé en français car il existe déjà un grand nombre d’articles en anglais traitant de ce sujet.
Un tableau dynamique est une structure de données dont la taille s’adapte automatiquement à la quantité de données qu’il doit stocker. A l’instar d’un tableau classique, on accède directement aux élements grâce à leurs indices.
Attributs
Notre classe de tableau dynamique est constituée de deux attributs :
Donnees : un tableau de type T
NbElements : un entier représentant le nombre d'élements présents dans notre tableau. Attention, le nombre d'élements ne doit pas être confondu avec la taille de notre tableau Donnees.
Lorsque l’on veut ajouter un élément à notre liste mais que le tableau est plein, c’est à dire que nbElements == Donnees.length, alors on agrandit le tableau. La nouvelle taille est égale à l’ancienne taille * 1.5 + 1. La nouvelle taille dépend des choix d’implémentation. Par exemple, en Python la classe PyListObject voit sa taille augmentée d’un facteur de 9/8.
Dans notre cas nous voulons que notre classe puisse stocker n’importe quel type de variables. Pour cela, nous allons utiliser la notion de généricité.
Les constructeurs
Notre classe possède deux constructeurs : le premier prend en paramètre la capacite initiale de notre tableau, le second est un constructeur par défaut.
Ajouter/Supprimer des élements
Par la suite nous allons définir plusieurs méthodes dont le rôle est d’ajouter/supprimer des éléments à notre liste.
La méthode ajouterElement ajoute un élement en fin de tableau :
On définit également la méthode definirElement. Celle-ci prend en paramètre un indice et un élément à insérer. Elle retourne l’ancien élément présent à l’indice passé en paramètre.
La méthode enleverElement prend en paramètre un élément, et si cet élément est présent dans la liste, elle retire la première occurence de celui-ci. Elle retourne true si l’élément à été supprimé et false sinon.
Accéder aux éléments
Pour accéder aux différents éléments de notre liste nous définissions la méthode obtenirElement qui prend en paramètre un indice et retourne l’élement présent à cet indice.
Autres méthodes
Nous définissons la méthode contient. Elle retourne true si notre liste contient l’élément passé en paramètre et false sinon.
Nous définissons également la méthode viderListe qui comme son nom l’indique permet de vider la liste :
Enfin, nous redéfinissons la méthode toString afin de pouvoir afficher notre liste :
Test de notre classe
Vous trouverez ci-dessous un main permettant de tester les quelques methodes que nous avons définies dans notre classe ArrayList :
Pour plus d’informations sur la classe ArrayList en Java n’hésitez pas à consulter la documentation officielle.