阅读量:0
在C#中,实现自定义的去重函数可以使用多种方法
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { int[] numbers = { 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9 }; int[] uniqueNumbers = RemoveDuplicates(numbers); Console.WriteLine("Original array:"); foreach (int number in numbers) { Console.Write(number + " "); } Console.WriteLine("\nUnique array:"); foreach (int number in uniqueNumbers) { Console.Write(number + " "); } } static int[] RemoveDuplicates(int[] numbers) { // 使用HashSet去重 HashSet<int> uniqueNumbersSet = new HashSet<int>(numbers); int[] uniqueNumbersArray = uniqueNumbersSet.ToArray(); return uniqueNumbersArray; } }
在这个示例中,我们使用了HashSet
类来实现去重。HashSet
是一个无序且不包含重复元素的集合。首先,我们将原始数组转换为HashSet
,这将自动删除所有重复元素。然后,我们将HashSet
转换回数组并返回结果。
如果你需要保留原始数组的顺序,你可以使用以下方法:
static int[] RemoveDuplicates(int[] numbers) { // 使用Dictionary去重并保留顺序 Dictionary<int, bool> uniqueNumbersDict = new Dictionary<int, bool>(); foreach (int number in numbers) { if (!uniqueNumbersDict.ContainsKey(number)) { uniqueNumbersDict[number] = true; } } int[] uniqueNumbersArray = uniqueNumbersDict.Keys.ToArray(); return uniqueNumbersArray; }
在这个示例中,我们使用了Dictionary
类来实现去重。我们遍历原始数组,并将每个元素添加到Dictionary
中。如果元素已经存在于Dictionary
中,我们跳过它。最后,我们将Dictionary
的键转换为数组并返回结果。这将保留原始数组的顺序。