【问题标题】:Convert List to Queue c# [duplicate]将列表转换为队列c# [重复]
【发布时间】:2015-03-08 15:07:17
【问题描述】:

是否可以将 List 转换为 Queue 元素? 到目前为止,我使用下面的代码,但如果 c# 中有构建方法,则不需要添加额外的循环

queue1.Clear();

foreach (int val in list1)
{
     queue1.Enqueue(val);
}

有什么办法吗?

【问题讨论】:

  • 有一个接受IEnumerable<T> 的构造函数,但这也是O(n)。我已经检查了来源,但它并没有根据ICollection<T> 保留空间。
  • 实际上,取决于queue1 的来源可能会真正影响这一点(因此撤回了我的欺骗性接近投票)。例如,如果它是函数的参数,则不能只将其分配给new Queue。你必须清除/重新加载它等等。

标签: c# .net vb.net


【解决方案1】:

Queue<T> 有一个overload which takes an IEnumerable<T>。请注意,无论如何它都会迭代它:

var queue = new Queue<string>(myStringList);

这是它在内部所做的:

public Queue(IEnumerable<T> collection)
{
    _array = new T[_DefaultCapacity];
    _size = 0;
    _version = 0;

    using(IEnumerator<T> en = collection.GetEnumerator()) 
    {
        while(en.MoveNext()) {
            Enqueue(en.Current);
        }
    }            
}
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
相关资源
最近更新 更多