C#.NETで配列リストの順序は保証されていますか?
質問
C#.NETでArrayListを使用している場合、順序はアイテムを追加する順序と同じままであることが保証されていますか?
解決
はい、要素は常に最後に追加されます(特に指定しない限り、たとえば挿入)。つまり、次の場合:
int size = list.Count;
int index = list.Add(element);
Assert.AreEqual(size, index); // Element is always added at the end
Assert.AreEqual(element, list[index]); // Returned index is position in list
もちろん、以前の要素を削除するか、その前に新しい要素を挿入すると、位置が変わります。
ちなみにArrayList
ではなくList<T>
を使用する正当な理由はありますか?非ジェネリックコレクションは so 2003 ...
(ちなみに、順序は<=>でも安定しています。)
他のヒント
はい、コードの一部が順序を変更しない限りです。スワップ。
はい。配列として保存されているため。
その他のプロパティは
- 保証注文
- ランダムアクセス。 O(1)のインデックスで任意の要素にアクセスできます
- 先頭と中央での挿入と削除が遅い。
- 未ソート。 (ソートには、クイックソートなどを使用してO(n log n)が必要です)
はい。 [回答の長さ制限]
ArrayListにアイテムを追加すると、アイテムは常にそのインデックスに留まります。もちろん変更しない限り。
(フレームワークはメモリを再配置する場合がありますが、インデックスは常に同じままです)
所属していません StackOverflow