32

オブジェクトのリストをキューに変換して、同じ順序を維持するにはどうすればよいですか?

4

5 に答える 5

58

Queueを取り込むコンストラクターがありICollectionます。リストをキューに渡して、同じ要素でリストを初期化できます。

var queue = new Queue<T>(list);    // where 'T' is the lists data type.
于 2010-08-11T23:39:51.993 に答える
10

「同じ順序」とはどういう意味ですか?

これを行う場合:

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

次に、キューはリストと同じ順序で列挙されます。つまり、を呼び出すと、Dequeue以前にに存在していた要素が返されlist[0]ます。

これを行う場合:

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

次に、キューはリストとは逆の順序で列挙されます。つまり、を呼び出すと、Dequeue以前にに存在していた要素が返されlist[list.Count - 1]ます。

于 2010-08-11T23:42:48.240 に答える
4
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-- )

于 2010-08-11T23:38:47.737 に答える
3

この拡張機能をツールボックスに追加して、特定のタイプのFIFOキューを作成します。

public static class ListExtensions
{
    public static Queue<T> ToQueue<T>(this List<T> items) => new Queue<T>(items);
}
于 2019-06-12T18:43:21.970 に答える
2
var mylist = new List<int> {1,2,3};
var q = new Queue<int>(mylist);
于 2010-08-11T23:41:01.317 に答える