Dans la programmation informatique est une structure de données qui se comporte comme un tableau informatique, mais met également en œuvre la capacité de croître de façon dynamique la taille du tableau, au besoin. Contrairement à un type de données tableau intrinsèque, qui ne peut être redimensionnée pendant l'exécution du programme, la structure ArrayList peut grandir et rétrécir la taille du tableau en réponse à l'ajout ou la suppression d'éléments. Il a un profil de performance très favorable, permettant un accès aléatoire rapide à la collecte des données. Il existe deux cas, toutefois, dans laquelle elle est plus lente que d'autres structures de données, à savoir que l'ajout et le retrait des éléments à partir du milieu de la rangée. La plupart des langages de programmation orientés objet ont un certain type de mise en œuvre d'une telle liste, mais ils sont parfois appelés des tableaux dynamiques.
L'utilisation d'un ArrayList fournit un programme avec la possibilité d'accéder à des objets de données avec un numéro d'index instantanément au lieu d'avoir à marcher à travers une séquence entière de données pour trouver une adresse, qui est nécessaire avec les listes chaînées. Avec la possibilité d'augmenter la taille du tableau, au besoin, c'est une approche très équilibrée qui tient compte à la fois la flexibilité et la vitesse. En outre, lorsque les éléments sont retirés de cette liste, la taille de la matrice est réduite, ce qui libère l'espace mémoire.
à ce qu'un ArrayList? Un avantage d'utiliser une liste de tableaux sur d'autres structures de données, c'est un objet de wrapper n'est pas nécessaire pour contenir les données étant stockées. Dans le cas d'une liste chaînée ou une table de hachage, un objet séparé est généralement nécessaire pour maintenir la technique utilisée pour contenir et manipuler la collection. Avec une liste de tableaux, la seule information nécessaire sur les objets de données est l'adresse de l'objet en mémoire. Cela signifie qu'il y aura moins d'utilisation de mémoire de tête lorsque l'on travaille avec ce type de liste.
Un problème potentiel avec l'aide d'un ArrayList peut provenir de la mise en œuvre et le système de gestion de la mémoire. La plupart des tableaux sont répartis comme emplacements mémoire consécutifs. Donc, pour utiliser une liste de tableaux d'une certaine taille, au moins autant de mémoire doit être disponible dans une séquence ininterrompue de blocs. Le tableau dynamique pourrait se redimensionner plusieurs fois, donc la fragmentation de mémoire peut se produire et conduire à un échec d'allocation de mémoire, l'arrêt de l'exécution du programme.
Les performances d'une liste de tableaux est similaire à celle de l'utilisation d'une matrice standard, bien que les temps d'accès sont un peu plus lent, car la matrice est encapsulée dans un objet. Un exemple dans lequel un tableau dynamique peut ralentir de façon spectaculaire, en fonction de la mise en œuvre, c'est quand la taille du tableau doit être changé. Il peut s'agir de la copie de la gamme actuelle dans un nouveau tableau qui a été alloué à la nouvelle taille désirée, provoquant une dégradation temporaire des performances. Le même problème peut être vécue lors de l'ajout ou la suppression d'un élément à partir du milieu de la liste, ce qui provoque tous les éléments suivants soient obligés de se déplacer vers un nouvel emplacement.