📜  c# 在列表中查找重复项 - C# (1)

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

C# 在列表中查找重复项

在编程中,我们经常需要在列表中查找重复项。C# 提供了多种方法来实现这一功能。下面将介绍几种常用的方法,并附带代码示例。

方法一:使用 HashSet
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        List<int> list = new List<int> { 1, 2, 3, 4, 3, 2, 1 };

        HashSet<int> set = new HashSet<int>();
        List<int> duplicates = new List<int>();

        foreach (int item in list)
        {
            if (!set.Add(item))
            {
                duplicates.Add(item);
            }
        }

        Console.WriteLine("重复项:");
        foreach (int item in duplicates)
        {
            Console.WriteLine(item);
        }
    }
}

方法说明:

  • 创建一个 HashSet 对象用于存储列表中的唯一项。
  • 遍历列表中的每个元素,如果元素已经存在于 HashSet 中,则将其添加到重复项列表中。
  • 最后打印出重复项列表。
方法二:使用 LINQ
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        List<int> list = new List<int> { 1, 2, 3, 4, 3, 2, 1 };

        var duplicates = list.GroupBy(x => x)
                             .Where(g => g.Count() > 1)
                             .Select(g => g.Key);

        Console.WriteLine("重复项:");
        foreach (int item in duplicates)
        {
            Console.WriteLine(item);
        }
    }
}

方法说明:

  • 使用 LINQ 的 GroupBy 方法按照元素进行分组。
  • 使用 Where 方法筛选出至少有两个元素的组。
  • 使用 Select 方法获取每个组的键(即重复项)。
  • 最后打印出重复项。

这两种方法可以根据实际需求选择使用,它们都能有效地在列表中查找重复项。

请注意,以上代码示例中的列表为整数类型,你可以根据需要修改为其他类型的列表。