En C#, j'utilise une collection Queue. Je peux facilement Enqueue ou Dequeue. D'accord, maintenant j'aimerais insérer quelque chose au milieu de la file d'attente ou au début de la file d'attente. Je ne trouve aucune méthode pour faire cela. Que recommandez-vous comme collection alternative?
Réponses
Trop de publicités?Une file d'attente, par définition, est quelque chose à laquelle vous ne pouvez que ajouter et retirer des choses. Si vous voulez insérer au milieu, vous voulez alors une liste complète (probablement LinkedList
), pas une Queue
.
Je veux dire, vous ne tenteriez pas de "vous insérer" au milieu de la file d'attente dans un supermarché (j'espère); cela fonctionne de la même manière ici.
Ce que vous cherchez est un LinkedList
. Vous pouvez ajouter au début, au milieu (en utilisant AddBefore ou AddAfter), ou à la fin de la liste.
C'est avantageux par rapport à l'utilisation d'une List
car vous pouvez ensuite utiliser RemoveFirst ou RemoveLast pour imiter plus étroitement une Queue ou une Stack.
Alors que les réponses sur cette page sont correctes si vous vous trouvez dans une position où vous ne pouvez pas utiliser autre chose qu'une file d'attente, vous pouvez (avec un peu de surcharge) ajouter un élément au milieu d'une file d'attente. Que cela devrait être fait ou non est une autre histoire.
var myQueue = new Queue();
myQueue.Enqueue("élément 0");
myQueue.Enqueue("élément 10");
var myList = myQueue.ToList();
myList.Insert(1, "élément 5");
myQueue = new Queue(myList);
- Réponses précédentes
- Plus de réponses