从List中删除重复的字符串(.NET 2.0!)

gre*_*b64 5 .net c# c++ list

我有问题找到从字符串列表中删除重复项的最有效方法(List).

我当前的实现是一个双foreach循环,检查每个对象的实例计数只有1,否则删除第二个.

我知道还有很多其他问题,但是他们所有最好的解决方案都需要上面的.net 2.0,这是我正在使用的当前构建环境.(GM和克莱斯勒非常不愿意改变... :))

这限制了可能的结果,因为不允许任何LINQ或HashSets.

我正在使用的代码是Visual C++,但C#解决方案也可以正常工作.

谢谢!

Joh*_*ohn 15

这可能不是你想要的,但如果你能控制它,最有效的方法是不首先添加它们......

你有控制权吗?如果是这样,您需要做的就是myList.Contains(currentItem)在添加项目之前进行呼叫并进行设置


Jar*_*Par 9

您可以执行以下操作.

List<string> list = GetTheList();
Dictionary<string,object> map = new Dictionary<string,object>();
int i = 0;
while ( i < list.Count ) {
  string current = list[i];
  if ( map.ContainsKey(current) ) {
    list.RemoveAt(i);
  } else {
    i++;
    map.Add(current,null);
  }
}
Run Code Online (Sandbox Code Playgroud)

这具有构建Dictionary<TKey,TValue>对象的开销,该对象将复制列表中的唯一值列表.但它速度相当快.