📌  相关文章
📜  c# 在字符串列表中查找重复项 - C# (1)

📅  最后修改于: 2023-12-03 14:39:45.780000             🧑  作者: Mango

C# 在字符串列表中查找重复项

在编程过程中,经常需要处理字符串列表,其中一个常见的问题就是如何查找重复项。本文将介绍在C#中如何在字符串列表中查找重复项的方法。

方法一:使用HashSet

HashSet是一种集合类型,它仅包含唯一的元素,可以用于查找重复项。我们可以将字符串列表的所有元素添加到HashSet中,然后检查HashSet中是否包含相同的元素。如果存在相同的元素,则说明它是一个重复项。

List<string> list = new List<string>{"apple", "banana", "apple", "orange"};
HashSet<string> set = new HashSet<string>();
foreach(string s in list)
{
    if(!set.Add(s))
    {
        Console.WriteLine(s + " is a duplicate");
    }
}

代码说明:

  • 首先创建一个字符串列表list,其中包含重复的元素。
  • 然后创建一个HashSet实例set,将list中的每个元素添加到set中。
  • 我们使用foreach循环遍历所有的元素。
  • 对于每个元素sHashSet.Add(s)方法将尝试向set中添加元素。如果元素已经存在,则该方法将返回false。
  • 我们使用if语句来检查Add()方法的返回值。如果返回false,则我们找到了一个重复项,输出该重复项的值。
方法二:使用LINQ

使用LINQ查询也是一个查找重复项的快速和方便的方法。下面的代码使用GroupBy()方法将字符串列表分组,并对每个组进行计数。最后,我们选择具有计数大于1的组,并输出其中的元素。

List<string> list = new List<string>{"apple", "banana", "apple", "orange"};
var duplicates = list.GroupBy(x => x)
                     .Where(g => g.Count() > 1)
                     .Select(g => g.Key);
foreach(string s in duplicates)
{
    Console.WriteLine(s + " is a duplicate");
}

代码说明:

  • 首先创建一个字符串列表list,其中包含重复的元素。
  • 我们使用LINQ查询来查找list中的重复项。
  • GroupBy()方法将字符串列表分组以计数每个元素的数量。对于每个组,我们选择具有计数大于1的组。
  • Select()方法用于选择具有重复元素的组的键。
  • 最后,我们使用foreach循环遍历所有的重复元素,输出每个元素的值。

总结

本文介绍了如何在字符串列表中查找重复项的两种方法:使用HashSet和使用LINQ。这些方法都是快速和方便的,可以帮助您处理和处理大量字符串数据。