Как оптимизировать удаление элемента из пользовательской коллекции? - C#
Формулировка задачи:
Здравствуйте. Я писал пользовательскую коллекцию и запутался в реализации удаления элемента из нее.
Написал какую-то глупость, которая медленно работает. Помогите оптимизировать. Код:
public bool Remove(string PageLink) { if (array.Length == 1 && array[0].PageLink == PageLink) { array = new CurrentAnime[0]; return true; } if (array.Length > 1) { CurrentAnime[] newArray = new CurrentAnime[array.Length - 1]; int removeIndex = -1; for (int i = 0; i < array.Length; i++) { if (array[i].PageLink == PageLink) removeIndex = i; } if (removeIndex == -1) return false; for (int i = 0; i < array.Length; i++) { if (i < removeIndex) newArray[i] = array[i]; else if (i > removeIndex) newArray[i - 1] = array[i]; } array = newArray; return true; } else return false; }
Решение задачи: «Как оптимизировать удаление элемента из пользовательской коллекции?»
textual
Листинг программы
public Int32 Length = 1; //Хранит кол-во заполненных ячеек и все работает с условием что длинна при инициализации 1(array). public bool Remove(CurrentAnime obj){ for (int i = 0; i < array.Length; i++) if ( array[i].PageLink == obj.PageLink ) { for (int n = i; n < array.Length-1; n++) array[n] = array[n+1]; array[Length-1] = null; Length--; return true; } return false; } public void Add(CurrentAnime obj){ CurrentAnime[] newArray; if ( array.Length != Length ) { array[Length] = obj; return; } newArray = new CurrentAnime[ array.Length*2 ]; array.CopyTo(newArray,0); newArray[array.Length] = obj; Length++; array = newArray; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д