如何检查List <string>中的重复项?</string>

时间:2012-09-13 23:57:31

标签: c#

我有这段代码:

private void test(List<string> a)
{

}

我想用于for循环,并检查List a中是否有重复的项目 然后用null标记它。

5 个答案:

答案 0 :(得分:1)

不确定你想在这里做什么,但是如果你想在列表中获得不同值的集合,你可以使用LINQ来做到这一点:

var distinctOnes = a.Distinct();

答案 1 :(得分:0)

遍历字符串并将新字符串放入HashSet中,以便您可以有效地检查重复:

var set = new HashSet<string>();
for (int i = 0; i < a.Count; i++) {
  if (set.Contains(a[i])) {
    // duplicate
    a[i] = null;
  } else {
    set.Add(a[i]);
  }
}

答案 2 :(得分:0)

你应该避免使用带副作用的方法Side Effects Answer。你可以达到你想要的效果:

private List<String> test(List<String> originalList)
{
    List<String> returnList = new ArrayList<String>();
    for (String value : originalList)
    {
        if (!returnList.contains(value))
        {
            returnList.add(value);
        }
    }
    return returnList;
}

你可以轻松地修改这个方法,如果你真的想要添加null(而不是添加任何东西,如果它已经被添加)......

答案 3 :(得分:0)

private bool HasDuplicates(List<string> a)
{
    return a.Distinct().Count() != a.Count();
}

答案 4 :(得分:0)

你可以使用LINQ

var list = (from n in a select n).Distinct().ToList();

所以知道你有一个唯一的列表,你可以检查“a”