2012-04-11 3 views
22

so habe ich eine Liste, wo ich ständig neue Werte hinzufügen muss, aber wenn ich tun muss ich es erhöhen und es zwischen zwei Werte einfügen.C# list <int> Wie füge ich einen neuen Wert zwischen zwei Werten ein

so Initialisierer würde 1, 3 Werte haben.

Ich würde dann eine neue Reihe von Zahlen verarbeiten. Die Initialisierer müssen die Werte haben.

1, 5, 3, 7

und wenn i einen anderen Satz von Zahlen verarbeiten sollte es

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

i wissen, wie man die neuen Werte korrekt erzeugt, ich brauche nur etwas Hilfe beim Einfügen zwischen den vorhandenen Werten der Initialisierer, ohne 2 oder 3 weitere Schleifen hinzufügen zu müssen, um die Positionen der Werte zu verschieben.

+3

Bitte lesen Sie Dokumentation: http://msdn.microsoft.com/en-us/library/sey5k5z4(v = vs.80) .aspx – Dima

+0

Oder sogar suchen - http://stackoverflow.com/questions/460223/whats-a-good-way-to-insert-something-in-the-middle-of-a-list, oder http://stackoverflow.com/questions/9462518/short-way-to-add-item-after-item-in-list oder ... – dash

Antwort

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

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

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

Gibt Ihnen 1,2,3.

+2

änderte die richtige Antwort, da diese detaillierter war. – gdubs

+0

Danke! Aber was, wenn Sie nicht wissen, ob es eine "3" in der Liste gibt oder nicht? (Ich möchte nur mein Listenelement bei Index 0 hinzufügen, egal was sonst in der Liste steht) – Kokodoko

+1

.Insert (0, ) – Phil

11

Verwendung List<T>.Insert:

initializers.Insert(index, value); 
+0

ich sehe. Ich wusste nicht, dass das existiert. lol. neu mit C#. Vielen Dank!! – gdubs

3

Sie können einfach List.Insert() anstelle von List.Add() verwenden, um Elemente an einer bestimmten Position einzufügen.

0

Ein weiterer Ansatz, wenn es ein rechen gangbarer Weg zum Sortieren der Elemente ist, ist:

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)); 
Verwandte Themen