2012-04-11 7 views
22

, więc mam listę, gdzie muszę stale dodawać nowe wartości, ale kiedy muszę to zwiększyć i wstawić między dwie wartości.C# list <int> jak wstawić nową wartość pomiędzy dwiema wartościami

List<int> initializers = new List <int>(); 

initializers.Add(1); 
initializers.Add(3); 

, więc inicjalizatory będą miały 1, 3 wartości.

następnie przetwarzałem nowy zestaw liczb. inicjatory będą musiały mieć wartości.

1, 5, 3, 7

a jeśli proces kolejnego zestawu numerów należy się

1, 9, 5, 13, 3, 11, 7, 15

I wiem, jak poprawnie wygenerować nowe wstawione wartości, potrzebuję tylko pomocy przy wstawianiu między istniejącymi wartościami inicjalizatorów bez konieczności dodawania 2 lub 3 dodatkowych pętli w celu przesunięcia pozycji wartości.

+3

Proszę przeczytać dokumentację: http://msdn.microsoft.com/en-us/library/sey5k5z4(v = vs.80) .aspx – Dima

+0

Albo nawet wyszukiwanie - http://stackoverflow.com/questions/460223/whats-a-good-way-to-insert-something-in-middle-of-a-list, lub http://stackoverflow.com/questions/9462518/short-way-to-add-item-after-item-in-list lub ... – dash

Odpowiedz

39
List<int> initializers = new List <int>(); 

initializers.Add(1); 
initializers.Add(3); 

int index = initializers.IndexOf(3); 
initializers.Insert(index, 2); 

Daje 1,2,3.

+2

zmieniono prawidłową odpowiedź, ponieważ ta była bardziej szczegółowa. – gdubs

+0

Dzięki! Ale co, jeśli nie wiesz, czy na liście znajduje się "3", czy nie? (Chcę tylko dodać pozycję listy w indeksie 0 bez względu na to, co jeszcze jest na liście) – Kokodoko

+1

. Wstaw (0, ) – Phil

11

Zastosowanie List<T>.Insert:

initializers.Insert(index, value); 
+0

. nie wiedziałem, że to istnieje. lol. nowy z C#. dzięki!! – gdubs

3

Możesz po prostu użyć List.Insert() zamiast List.Add(), aby wstawić elementy w określonej pozycji.

0

Innym podejściem, jeśli jest obliczeniowo opłacalne sposób sortowania elementów, to:

list.Insert(num); 
// ... 
list.Insert(otherNum); 

// Sorting function. Let's sort by absolute value 
list.Sort((x, y) => return Math.Abs(x) - Math.Abs(y)); 
Powiązane problemy