【问题标题】:c# list<int> how to insert a new value in between two valuesc# list<int> 如何在两个值之间插入一个新值
【发布时间】:2012-04-24 01:10:55
【问题描述】:

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

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 个循环来移动值的位置。

【问题讨论】:

标签: c# asp.net list


【解决方案1】:

使用List&lt;T&gt;.Insert:

initializers.Insert(index, value);

【讨论】:

  • 我明白了。我不知道这存在。哈哈。新的 C#。谢谢!!
【解决方案2】:
List<int> initializers = new List <int>();

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

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

给你 1,2,3。

【讨论】:

  • 谢谢!但是,如果您不知道列表中是否有“3”怎么办? (我只想在索引 0 处添加我的列表项,无论列表中还有什么)
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

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

      myList.Insert(index, newItem);
      

      插入多个项目也很容易,感谢InsertRange 方法:

      myList.InsertRange(index, newItems);
      

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

      var index = myList.FindIndex(x => x.Whatever == whatever); // e.g x.Id == id
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 2018-06-27
        • 1970-01-01
        • 2012-06-18
        • 1970-01-01
        • 2013-12-06
        • 1970-01-01
        相关资源
        最近更新 更多