相关疑难解决方法(0)

如何从列表中快速删除项目

我正在寻找一种快速从C#中删除项目的方法List<T>.文档说明List.Remove()List.RemoveAt()操作都是O(n)

这严重影响了我的申请.

我写了几个不同的删除方法,并在List<String>500,000个项目上测试它们.测试用例如下所示......


概观

我写了一个方法,它会生成一个字符串列表,其中只包含每个数字的字符串表示形式("1","2","3",...).然后我尝试remove了列表中的每个第5项.以下是用于生成列表的方法:

private List<String> GetList(int size)
{
    List<String> myList = new List<String>();
    for (int i = 0; i < size; i++)
        myList.Add(i.ToString());
    return myList;
}
Run Code Online (Sandbox Code Playgroud)

测试1:RemoveAt()

这是我用来测试RemoveAt()方法的测试.

private void RemoveTest1(ref List<String> list)
{
     for (int i = 0; i < list.Count; i++)
         if (i % 5 == 0)
             list.RemoveAt(i);
}
Run Code Online (Sandbox Code Playgroud)

测试2:删除()

这是我用来测试Remove()方法的测试.

private void RemoveTest2(ref List<String> list)
{
     List<int> itemsToRemove …
Run Code Online (Sandbox Code Playgroud)

c# linq collections list

69
推荐指数
4
解决办法
8万
查看次数

标签 统计

c# ×1

collections ×1

linq ×1

list ×1