Por desgracia, no se puede utilizar directamente el antiguo objeto .NET Queue
. Queue está hecho para lógica "ciega" de "primero en entrar, primero en salir", por lo que no puedes realizar nada más que eso.
Si realmente necesita para implementar una cola en la que se combinan los elementos y recuperar su posición (una cosa muy útil) tratar de envolver todo en una clase que expone los métodos siguientes:
public class CustomQueue<T> {
private LinkedList<T> fifoList = new LinkedList<T>();
public Enqueue(T newItem) {
//add newItem at the head of fifoList
}
public T Dequeue() {
//return and remove the item that is located at the tail of the queue
}
public int indexOf(T searchFor) {
int ret = 0;
for (T item: fifoList) {
if (item.equals(searchFor)) return ret;
ret++;
}
}
}
Para una mejor rendimiento (cola y quitar de la cola O (1), mientras que indexOf O (n)) se debe utilizar una lista de doble ligado
Esta es una solución de trabajo, pero es más una respuesta a la pregunta: ¿Cómo poner una cola en una lista para que pueda llamar al método IndexOf? –
De hecho, pero las colas no ofrecen una interfaz para devolver el índice, así que esta es una solución de compromiso – ionden
Estoy de acuerdo con, pero esto necesita una segunda reflexión, si es posible –