Как эффективно удалить из списка <T> (C #)?
Если я правильно понял (и, пожалуйста, поправьте меня, если ям неправильно), список реализован массивом в .NET, что означает, что каждое удаление элемента в списке приведет к перераспределению всего списка (что, в свою очередь, означает, чтоO(n)
).Я'
Я занимаюсь разработкой игры, в игре у меня много пуль, летающих в воздухе в любой момент, пустьскажем, 100 пуль, каждый кадр я перемещаю их на несколько пикселей и проверяю на предмет столкновения с объектами в игре, мне нужно удалить из списка каждую попавшуюся пулю.
Поэтому я собираю столкнувшуюся пулю в другой временный список и затем делаю следующее:
foreach (Bullet bullet in bulletsForDeletion)
mBullets.Remove(bullet);
Потому что циклO(n)
и удалениеO(n)
, Я потратилO(n^2
Время убрать.
Есть ли лучший способ удалить его или использовать более подходящую коллекцию?