如何将对象列表转换或转换为对象队列

发布于 2024-09-13 13:56:34 字数 30 浏览 5 评论 0原文

如何将对象列表转换为队列,从而保持相同的顺序?

How can one convert a list of objects to a queue thereby maintaining the same order?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

泛泛之交 2024-09-20 13:56:34

Queue 有一个接受 ICollection 的构造函数。您可以将列表传递到队列中,以使用相同的元素对其进行初始化:

var queue = new Queue<T>(list);    // where 'T' is the lists data type.

Queue has a constructor that takes in an ICollection. You can pass your list into the queue to initialize it with the same elements:

var queue = new Queue<T>(list);    // where 'T' is the lists data type.
ˇ宁静的妩媚 2024-09-20 13:56:34

“相同的顺序”是什么意思?

如果这样做:

var queue = new Queue<object>(list);

那么队列将以与列表相同的顺序进行枚举,这意味着对 Dequeue 的调用将返回先前驻留在 list[0] 中的元素

如果这样做:

var queue = new Queue<object>(list.AsEnumerable().Reverse());

那么队列将以与列表相反的顺序进行枚举,这意味着调用 Dequeue 将返回之前驻留在 list[list.计数 - 1]

What do you mean by "the same order?"

If you do this:

var queue = new Queue<object>(list);

Then the queue will be enumerated over in the same order as the list, which means that a call to Dequeue would return the element that had previously resided at list[0].

If you do this:

var queue = new Queue<object>(list.AsEnumerable().Reverse());

Then the queue will be enumerated over in the opposite order as the list, which means that a call to Dequeue would return the element that had previously resided at list[list.Count - 1].

孤君无依 2024-09-20 13:56:34
var q = new Queue<Object>();
for( int i = 0; i < list.Count; i++ ) q.Enqueue( list[i] );

也就是说,假设“相同顺序”意味着要从队列中出队的第一个项目应该是 list[0]。

如果意思相反,只需使用反向循环:for( int i = list.Count-1; i >= 0; i-- )

var q = new Queue<Object>();
for( int i = 0; i < list.Count; i++ ) q.Enqueue( list[i] );

That is, assuming "same order" means that the first item to be dequeued from the queue should be list[0].

If it means the opposite, just use the reverse loop: for( int i = list.Count-1; i >= 0; i-- )

夏雨凉 2024-09-20 13:56:34

将此扩展添加到您的工具箱中以创建特定类型的 FIFO 队列。

public static class ListExtensions
{
    public static Queue<T> ToQueue<T>(this List<T> items) => new Queue<T>(items);
}

Add this extension to your toolbox to create a FIFO queue of the specific type.

public static class ListExtensions
{
    public static Queue<T> ToQueue<T>(this List<T> items) => new Queue<T>(items);
}
半寸时光 2024-09-20 13:56:34
var mylist = new List<int> {1,2,3};
var q = new Queue<int>(mylist);
var mylist = new List<int> {1,2,3};
var q = new Queue<int>(mylist);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文