Как оптимизировать удаление элемента из пользовательской коллекции? - 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;
        }

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы