Qu'est-ce qu'une liste de tableaux?
Une ArrayList en programmation informatique est une structure de données qui se comporte comme un tableau d'ordinateur, mais implémente également la possibilité d'augmenter de manière dynamique la taille du tableau selon les besoins. Contrairement à un type de données de tableau intrinsèque, qui ne peut pas être redimensionné lors de l'exécution du programme, la structure ArrayList peut augmenter et réduire la taille du tableau en réponse à l'ajout ou à la suppression d'éléments. Son profil de performance est très favorable, permettant un accès aléatoire rapide à la collecte de données. Cependant, il existe deux cas dans lesquels il est plus lent que certaines autres structures de données, à savoir l'ajout et le retrait d'éléments du milieu du tableau. La plupart des langages de programmation orientés objet ont une sorte de mise en œuvre d'une telle liste, bien qu'ils s'appellent parfois des tableaux dynamiques.
L'utilisation d'une liste de tableaux permet à un programme d'accéder à des objets de données avec un numéro d'index instantanément, sans avoir à parcourir toute une séquence de données pour trouver une adresse, indispensable avec les listes chaînées. Avec la possibilité d'augmenter la taille de la matrice en fonction des besoins, c'est une approche très équilibrée qui prend en compte à la fois la flexibilité et la rapidité. De plus, lorsque des éléments sont supprimés d'une telle liste, la taille de la matrice est réduite, libérant ainsi de la mémoire.
L'utilisation d'un ArrayList par rapport à d'autres structures de données présente l'avantage de ne pas obliger un objet wrapper à contenir les données en cours de stockage. Dans le cas d'une liste liée ou d'une table de hachage, un objet séparé est généralement nécessaire pour conserver la technique utilisée pour conserver et manipuler la collection. Avec ArrayList, la seule information nécessaire sur les objets de données est l'adresse de l'objet en mémoire. Cela signifie que vous utiliserez moins de mémoire en surcharge si vous utilisez ce type de liste.
Un problème potentiel lié à l'utilisation d'un ArrayList peut provenir du système de mise en œuvre et de gestion de la mémoire. La plupart des tableaux sont alloués en tant qu'emplacements de mémoire consécutifs. Ainsi, pour utiliser un ArrayList d’une certaine taille, au moins autant de mémoire doit être disponible dans une séquence ininterrompue de blocs. Le tableau dynamique peut se redimensionner lui-même plusieurs fois. Une fragmentation de la mémoire peut se produire et entraîner un échec de l'allocation de mémoire, interrompant l'exécution du programme.
Les performances d'un ArrayList sont similaires à celles d'un tableau standard, bien que les temps d'accès soient légèrement plus lents car le tableau est encapsulé dans un objet. Dans certains cas, un tableau dynamique peut considérablement ralentir, en fonction de la mise en œuvre, lorsque la taille du tableau doit être modifiée. Cela peut impliquer la copie du groupe actuel dans un nouveau groupe alloué à la nouvelle taille souhaitée, entraînant une dégradation temporaire des performances. Le même problème peut survenir lors de l'ajout ou de la suppression d'un élément du milieu de la liste, ce qui oblige à déplacer tous les éléments suivants vers un nouvel emplacement.