我有这段代码:
private void test(List<string> a)
{
}
我想用于for循环,并检查List a中是否有重复的项目 然后用null标记它。
答案 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”