web-dev-qa-db-fra.com

Quelle est la différence entre un tableau, un tableau et une liste?

Je me demande quelle est la différence exacte entre un Array, ArrayList et un List (car ils ont tous des concepts similaires) et où vous utiliseriez l'un sur l'autre.

Exemple:

Tablea
Pour le Array, nous ne pouvons ajouter que les types que nous déclarons pour cet exemple un int.

int[] Array = new Int[5]; //Instansiation of an array
for(int i = 0; i < Array.Length; i++)
{
   Array[i] = i + 5; //Add values to each array index
}

ArrayList
Nous pouvons ajouter des valeurs comme un Array

ArrayList arrayList = new ArrayList();
arrayList.Add(6);
arrayList.Add(8);

Liste
Encore une fois, nous pouvons ajouter des valeurs comme nous le faisons dans un Array

List<int> list = new List<int>();
list.Add(6);
List.Add(8);

Je sais que dans un liste vous pouvez avoir le type générique afin que vous puissiez passer dans tout type que vous ne pouvez pas faire dans un tablea mais mes questions exactes sont:

  • Où utiliseriez-vous l'un sur l'autre?
  • La fonctionnalité exacte de différence entre les trois?
27
kCC

Ce sont différents types d'objets. Ils ont des capacités différentes et stockent leurs données de différentes manières. Vous pouvez également demander quelle est la différence entre une décimale et une date/heure.

Un tableau (System.Array) est de taille fixe une fois alloué. Vous ne pouvez pas y ajouter d’éléments ni en supprimer. De plus, tous les éléments doivent être du même type. En conséquence, il est de type sûr et est également le plus efficace des trois, à la fois en termes de mémoire et de performances. De plus, System.Array prend en charge plusieurs dimensions (c’est-à-dire qu’il possède une propriété Rank ), contrairement à List et ArrayList (bien que vous puissiez créer une liste de listes ou une liste de tableaux ArrayList, si vous le souhaitez).

Un ArrayList est un tableau flexible contenant une liste d'objets. Vous pouvez en ajouter et en supprimer des éléments, qui s’occupent automatiquement de l’allocation d’espace. Si vous y stockez des types de valeur, ils sont encadrés et non emballés, ce qui peut être un peu inefficace. En outre, il n’est pas sûr.

UNE List<> tire parti des génériques; il s’agit essentiellement d’une version sécurisée par type de ArrayList. Cela signifie qu'il n'y a pas de boxing ou de déballage (ce qui améliore les performances) et si vous essayez d'ajouter un élément de type incorrect, une erreur de compilation se produira.

55
John Wu