我正在寻找一种快速从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)