Подтвердить что ты не робот

Является ли порядок гарантированного arraylist в С#.NET?

Если я использую ArrayList в С#.NET, гарантирован ли заказ, чтобы он оставался таким же, как и заказ, который я добавляю в него?

4b9b3361

Ответ 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, элемент всегда будет оставаться в этом индексе. Если, конечно, если вы его измените.

(структура может переупорядочить память, но ваш индекс всегда останется прежним)