-6

我有这个代码:

private void test(List<string> a)
{

}

我想在 for 循环中使用 for 并检查 List a 中是否存在重复项,然后将其标记为 null。

4

5 回答 5

1

不确定您想在这里做什么,但如果您只想获取列表中不同值的集合,您可以使用 LINQ 来执行此操作:

var distinctOnes = a.Distinct();
于 2012-09-14T00:01:12.437 回答
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 (而不是如果已添加任何内容,则不添加任何内容)...

于 2012-09-14T00:03:03.370 回答
0
private bool HasDuplicates(List<string> a)
{
    return a.Distinct().Count() != a.Count();
}
于 2012-09-14T00:03:20.557 回答
0

你可以使用 LINQ

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

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

于 2012-09-14T00:04:33.690 回答
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]);
  }
}
于 2012-09-14T00:02:06.787 回答