Thật không may, bạn không thể sử dụng thẳng đối tượng .NET Queue
cũ. Hàng đợi được thực hiện cho logic "mù" đầu tiên trong đầu tiên, để bạn không thể thực hiện bất cứ điều gì khác ngoài điều đó.
Nếu bạn thực sự cần phải thực hiện một hàng đợi trong đó bạn có thể tìm thấy các yếu tố và lấy vị trí của họ (một điều rất hữu ích) cố gắng quấn tất cả mọi thứ trong một lớp học mà đưa ra phương án sau:
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++;
}
}
}
Đối với tốt hơn hiệu suất (hàng đợi và dequeue O (1) trong khi indexOf O (n)), bạn nên sử dụng một danh sách liên kết kép
Nguồn
2012-03-25 18:37:05
Đây là một giải pháp làm việc, nhưng nó là một câu trả lời cho câu hỏi: Làm thế nào để đặt hàng đợi vào danh sách để tôi có thể gọi phương thức IndexOf? –
Thật vậy, nhưng hàng đợi không cung cấp giao diện để trả lại chỉ mục vì vậy đây là giải pháp thỏa hiệp – ionden
Tôi ổn, nhưng điều này cần suy nghĩ thứ hai, nếu có thể –