Добавление элементов в начало массива списков

#c# #list

#c# #Список

Вопрос:

В настоящее время я работаю над проектом C #, где у меня есть список, инициализированный объектом класса, т.Е. List<MyClass> myList = new List<MyClass>();

Я добавил некоторые данные в этот список, но мне нужно добавить в него больше данных, однако это должно быть в начале массива, а не в конце, есть ли способ, которым я могу это сделать.

Спасибо за любую помощь, которую вы можете предоставить.

Комментарии:

1. Что именно MyList ?

2. если это arraylist, используйте insert(idx, object)

3. В стандартных реализациях IList должен быть Insert() метод, просто используйте его.

4. Например, MyList реализованный IList .Insert() метод имеет перегрузку, которая принимает индекс: myList.Insert(0, moreData); Если ваш MyList класс имеет собственную реализацию, вам придется написать этот метод самостоятельно. Какова базовая структура данных вашего MyList класса?

5. Извините, это должен был быть List<MyClass>. Теперь я обновил вопрос

Ответ №1:

Зависит от типа вашего «myList»! Если это простой список, то

 myList.Insert(0, new MyClass());
  

решит вашу проблему!

Ответ №2:

Я предполагаю, что вы используете List и для этого вы можете использовать

 List<string> mylist = new List<string>();
string[] input = { "fist", "second"  }
mylist.InsertRange(0, input);
  

подробнее : Список.Метод InsertRange

Ответ №3:

Прежде всего, то, что вы описываете, — это не массив, а список. Массив будет:

 var myArray = new MyClass[]{new MyClass("foo"), new MyClass("Bar"};
  

Во-вторых, массивы реализуют IList из T и ICollection из T, но методы реализованы явно (вы должны выполнить приведение), а исключение Add / Insert /Remove throw не реализовано. Это означает, что система.Класс массива является своего рода неизменяемым.

Наконец, как упоминалось здесь, если вы используете список, вы можете вызвать Insert. Который имеет два параметра: первый — это индекс, в который вы хотите вставить элемент, а второй — элемент для вставки:

 myList.Insert(0, new MyClass("aaa"))
  

Ответ №4:

РЕДАКТИРОВАТЬ: Вопрос изменен, чтобы уточнить, что List<T> используется

Вы можете использовать Insert() для добавления по определенному индексу (используйте 0 для начала). Вот документация для List<T>.Insert()

http://msdn.microsoft.com/en-us/library/sey5k5z4.aspx

Ответ №5:

Если вы добавляете только в начало списка, возможно, стоит обернуть стандартный список так, чтобы внутренне он добавлял их в конец, но когда вы повторяете его, он выполняется в обратном порядке.

Это потому, что Insert — это O (n), а Add — это O (1) при условии, что список не должен изменять размер внутри.