39

所以我有一个列表,我需要不断地添加新值,但是当我这样做时,我需要增加它并将其插入两个值之间。

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

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

因此初始化程序将具有 1、3 个值。

然后我会处理一组新的数字。初始化程序将需要具有值。

1、5、3、7

如果我处理另一组数字,它应该变成

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

我知道如何正确生成插入的新值,我只需要一些帮助来将其插入到初始化器的现有值之间,而无需再添加 2 或 3 个循环来移动值的位置。

4

5 回答 5

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

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

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

给你1,2,3。

于 2012-04-11T17:26:29.660 回答
21

使用List<T>.Insert

initializers.Insert(index, value);
于 2012-04-11T17:25:32.060 回答
4

您可以只使用List.Insert()而不是 List.Add() 在特定位置插入项目。

于 2012-04-11T17:26:52.133 回答
4

对于那些正在寻找更复杂的东西(在 2 个值之间插入多个项目,或者不知道如何index在列表中找到项目的)的人,这里是答案:

正如其他人已经提到的那样,在 2 个值之间插入一项非常容易:

myList.Insert(index, newItem);

由于方法,插入多个项目也很容易InsertRange

myList.InsertRange(index, newItems);

最后使用以下代码,您可以在列表中找到项目的索引:

var index = myList.FindIndex(x => x.Whatever == whatever); // e.g x.Id == id
于 2019-04-23T12:13:25.683 回答
0

如果有一种计算上可行的对元素进行排序的方法,另一种方法是:

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));
于 2012-04-11T20:58:07.407 回答