我一直在编写一个程序,它有一个100,000个元素的列表,我必须处理具有不同条件的所有元素。这最多不需要太多时间3秒。在此之后,我有一个有效的条目列表和我的信号列表,其中有100000个元素。通常新的列表大小为6K - 7K。主要问题是当我使用List.Remove函数或其他任何方式从100K元素中删除无效元素时,它的速度太慢。列表花费的时间太多
请指导我是否应该使用其他任何东西,然后是LIST,或者我也可以使用此代码做些事情。
我包括我试过的所有代码。
for(int k = 0; k < initialList.Count;k++)
{
combo c = initialList.ElementAt(k);
if(invalidEntries.Contains(c))
{
smartString.Append(c.number1.ToString());
smartString.Append(c.number2.ToString());
smartString.Append(c.number3.ToString());
smartString.Append(c.number4.ToString());
smartString.Append(c.number5.ToString());
smartString.Append(" Sum : ");
smartString.Append(c.sum.ToString());
smartString.AppendLine();
InvalidCombo.AppendText(smartString.ToString());
smartString.Clear();
}
else
{
smartString.Append(c.number1.ToString());
smartString.Append(c.number2.ToString());
smartString.Append(c.number3.ToString());
smartString.Append(c.number4.ToString());
smartString.Append(c.number5.ToString());
smartString.Append(" Sum : ");
smartString.Append(c.sum.ToString());
smartString.AppendLine();
validCombo.AppendText(smartString.ToString());
smartString.Clear();
}
}
而且
for(int k=0;k<100000;k++)
{
combo c = initialList.ElementAt(k);
if (!invalidEntries.Contains(c))
validEntries.Add(c);
}
我也曾尝试卸下摆臂的功能,但我认为不能单把它。所以任何建议/解决方案?
这是U/I组件还是集合?如果您试图在U/I组件中显示100K项目,也许您需要重新考虑您的设计? – OldProgrammer
尝试使用StringDictionary而不是列表,并让程序在从字典中删除项目时提供字典条目的关键字。字典比列表更容易搜索。 –
@OldProgrammer是它的一个UI程序,但列表是在代码中生成的。它是一个结构列表,结构有6个整数元素。在ui中显示的时间不是,但在处理部分上面给出了 –