如何在C#中实现一个类型为Dictionary<int, string>的队列,并进行迭代/入队/出队操作

3

我想要实现一个 Queue,其类型为 Dictionary<int, string>,并且能够进行迭代、入列和出列操作。

最终需要的是一个包含 intstring 的队列,无论它以何种形式呈现。

目前我有类似以下代码:

  private static Queue<Dictionary<int, string>> requestQueue = new Queue<Dictionary<int, string>>();

  foreach (KeyValuePair<int, string> dictionaryListItem in dictionaryList)
  {
      requestQueue.Enqueue( dictionaryListItem ); // error
  }

但是似乎无法使用上述方法排队。有谁知道正确的语法吗?


你在尝试做什么?语法很简单,但代码没有意义。 - Jon
您正在尝试将不同类型加入队列。KeyValuePair<TKey, TValue>Dictionary<TKey, TValue>不同。 - Daniel Kelley
1
@jon 我正在尝试简单地创建一个整数、字符串队列。 - Gga
2
@RodgersandHammertime:那么你应该写成 Queue<Tuple<int, string>> 或者 Queue<KeyValuePair<int, string>> - Jon
2个回答

6

你有一个字典队列,但是想要将单个字典值添加到队列中。

如果你确实想要拥有一个字典队列,你应该像这样改变你的代码:

requestQueue.Enqueue(dictionaryList);

如果你需要一个键值对队列,将你的队列更改为下面这样:
Queue<KeyValuePair<int, string>> requestQueue

0

简单代码片段:

Queue<KeyValuePair<int, string>> queue = new Queue<KeyValuePair<int, string>>();
void Enqueue()
{
    queue.Enqueue(new KeyValuePair<int, string>(1, "One"));
    queue.Enqueue(new KeyValuePair<int, string>(2, "Two"));
    //..
}
void Dequeue()
{
    while (true)
    {
        var kvp = queue.Dequeue();
        Console.WriteLine(string.Format("key: {0}, value: {1}", kvp.Key, kvp.Value));
    }
    //..
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接