以下过程(解释如下)适用于非常小的列表,但是当列表包含大量项目(1/2 百万)时,应用程序进入“无响应”状态,大约需要 2.5 分钟才能完成(非常糟糕时间)。我可能会添加应用程序需要处理至少 1 亿个项目的列表(最终)。
这是有问题的过程的代码:
public void removeItems(List<long> L, SortedList<long, List<long>> _subLists)
{
foreach (KeyValuePair<long, List<long>> kvp in _subLists)
{
foreach (long duplicate in kvp.Value)
{
int j = L.IndexOf(duplicate);
L.RemoveRange(j,(int)kvp.Key);
}
}
}
L 是一个长值列表。_subLists 是一个排序列表,其中每个值都是来自 L 的值的列表,开始一些差异(不相关)的算术级数系列。与该值关联的键是值包含的系列的长度。
例子:
L = {1,2,3,5,6,7,18,20,21} _subLists = {2,<20>} {3,<1,5>}
该过程只是从 L 中删除算术级数系列。