La commande d'un arraylist est-elle garantie en C # .NET?
Question
Si j'utilise une liste de tableaux en C # .NET, l'ordre sera-t-il identique à celui auquel j'ajoute des éléments?
La solution
Oui, les éléments sont toujours ajoutés à la fin (sauf indication contraire, par exemple, avec un appel à Insérer ). En d'autres termes, si vous le faites:
int size = list.Count;
int index = list.Add(element);
Assert.AreEqual(size, index); // Element is always added at the end
Assert.AreEqual(element, list[index]); // Returned index is position in list
La position changera bien sûr si vous supprimez des éléments antérieurs ou si vous insérez de nouveaux éléments avant.
Y a-t-il une bonne raison pour que vous utilisiez ArrayList
plutôt que List<T>
en passant? Les collections non génériques sont so 2003 ...
(L'ordre est stable dans <=> également, au fait.)
Autres conseils
Oui, à moins qu'un élément de votre code ne modifie l'ordre, par exemple. permutation.
Oui c'est ça. Comme il est stocké sous forme de tableau.
Les autres propriétés sont
- Commande garantie
- Accès aléatoire. Vous pouvez accéder à n’importe quel élément par index dans O (1)
- Insertion lente et suppression au début et au milieu.
- Non trié. (Le tri doit prendre O (n log n) à l’aide de quicksort ou similaire)
Oui. [limite de longueur de réponse stupide]
Lorsque vous ajoutez un élément à une liste de tableaux, cet élément reste toujours à cet index. Sauf si bien sûr vous le changez.
(le framework peut réorganiser la mémoire mais votre index restera toujours le même)