我有這樣的代碼:我如何檢查列表<string>中的重複項?
private void test(List<string> a)
{
}
我想用在for循環的,並檢查是否有在列表中重複項 然後用空標記它。
我有這樣的代碼:我如何檢查列表<string>中的重複項?
private void test(List<string> a)
{
}
我想用在for循環的,並檢查是否有在列表中重複項 然後用空標記它。
不知道你想在這裏做什麼,但如果你想先手在列表中的不同值的集合,你可以使用LINQ來做到這一點:通過串
var distinctOnes = a.Distinct();
環,並把在一個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]);
}
}
你真的應該避免副作用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;
}
您可以輕鬆地修改此方法來添加空,以及如果你真的想(而不是如果已經添加不添加任何東西)...
而不是(特別低效的)方法,你可以使用'return originalList.Distinct()'; – Servy
private bool HasDuplicates(List<string> a)
{
return a.Distinct().Count() != a.Count();
}
你可以使用LINQ
var list = (from n in a select n).Distinct().ToList();
所以知道你有一個獨特的列表,你可以對證「了」
爲什麼你在查詢開始時有一個身份選擇?只需調用'list.Distinct()'。 – Servy
你是什麼意思「用空標記」? – Enigmativity
你可能根本沒有發佈任何代碼,因爲你發佈的帖子是毫無意義的。投票結束這個「不是真正的問題」,因爲它表明自己沒有努力去解決問題,在發佈之前根本沒有研究。 –