Если я использую ArrayList в С#.NET, гарантирован ли заказ, чтобы он оставался таким же, как и заказ, который я добавляю в него?
Является ли порядок гарантированного arraylist в С#.NET?
Ответ 1
Да, элементы всегда добавляются до конца (если вы не указали иначе, например, с вызовом Insert). Другими словами, если вы это сделаете:
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>
кстати? Неродные коллекции - это 2003...
(Кстати, порядок также устойчив в List<T>
).
Ответ 2
Да, это так, если только часть вашего кода не изменяет порядок, например. обменивать.
Ответ 3
Да, это так. Поскольку он хранится как массив.
Другие свойства
- Гарантированный заказ
- Случайный доступ. Вы можете получить доступ к любому элементу по индексу в O (1)
- Медленная вставка и удаление в начале и середине.
- Unsorted. (Сортировка должна принимать O (n log n) с помощью quicksort или аналогичного)
Ответ 4
Да. [глупое ограничение длины ответа]
Ответ 5
Когда вы добавляете элемент в ArrayList, элемент всегда будет оставаться в этом индексе. Если, конечно, если вы его измените.
(структура может переупорядочить память, но ваш индекс всегда останется прежним)