我有这个代码:
private void test(List<string> a)
{
}
我想在 for 循环中使用 for 并检查 List a 中是否存在重复项,然后将其标记为 null。
我有这个代码:
private void test(List<string> a)
{
}
我想在 for 循环中使用 for 并检查 List a 中是否存在重复项,然后将其标记为 null。
不确定您想在这里做什么,但如果您只想获取列表中不同值的集合,您可以使用 LINQ 来执行此操作:
var distinctOnes = a.Distinct();
你真的应该避免有副作用的方法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 (而不是如果已添加任何内容,则不添加任何内容)...
private bool HasDuplicates(List<string> a)
{
return a.Distinct().Count() != a.Count();
}
你可以使用 LINQ
var list = (from n in a select n).Distinct().ToList();
所以知道你有一个唯一的列表,你可以检查“a”
遍历字符串并将新字符串放入 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]);
}
}