インデックスが連続していない (ただし昇順でのみ追加される) 配列に対して C# で使用するコレクション型はどれですか?
たとえば、オブジェクト A、B、および C をインデックス 2、4、および 7 で追加した場合、インデックス (2/4/7) または場所 (1/2/3 または 0/1/2 の両方) でアクセスする必要があります。仕事)。
インデックスが連続していない (ただし昇順でのみ追加される) 配列に対して C# で使用するコレクション型はどれですか?
たとえば、オブジェクト A、B、および C をインデックス 2、4、および 7 で追加した場合、インデックス (2/4/7) または場所 (1/2/3 または 0/1/2 の両方) でアクセスする必要があります。仕事)。
インデックスでアクセスできるようにオブジェクトを保存するには、を使用する必要がありますが、場所を保存しないので、「場所」を保存するためのDictionary
何らかの種類も必要になります。これらを独自のクラスに結合し、追加を1つの操作として処理して、同期していることを確認します。List
Dictionary
1つだけを使用する場合は、を使用しList
てループし、キーを検索できますが、線形のO(N)時間がかかります。
編集
Matthew Strawbridgeが指摘しているように、このBinarySearch
メソッドはO(log N)内の要素を検出するため、辞書の使用をスキップできます。
を使用しDictionary
ます。
using System.Collections.Generic;
Dictionary<int, type> dict = new Dictionary<int, type>();
// Add values:
dict.Add(2, A);
dict.Add(4, B);
dict.Add(7, C);
// by index:
var A = dict[2];
var B = dict[4];
var C = dict[7];
// by place:
var A = dict.ElementAt(0);
var B = dict.ElementAt(1);
var C = dict.ElementAt(2);