合并两个哈希表集合的 C# 程序

1. 前言

哈希表是一种常见的数据结构,它可以通过键值对来存储和访问数据。在 C# 中,哈希表被实现为 Dictionary 类。在某些情况下,我们需要将两个哈希表集合进行合并。本文将介绍如何在 C# 中合并两个哈希表集合。

2. 合并两个哈希表集合的方法

2.1 直接使用 for 循环

最简单的方法是使用 for 循环直接遍历两个哈希表集合,将其中的每个键值对加入到合并后的哈希表中。下面是代码实现:

var dict1 = new Dictionary<string, int>{{"apple", 5}, {"banana", 3}, {"orange", 2}};

var dict2 = new Dictionary<string, int>{{"pear", 4}, {"apple", 6}, {"banana", 2}};

var result = new Dictionary<string, int>();

foreach (var keyValuePair in dict1)

{

result.Add(keyValuePair.Key, keyValuePair.Value);

}

foreach (var keyValuePair in dict2)

{

if (result.ContainsKey(keyValuePair.Key))

{

result[keyValuePair.Key] += keyValuePair.Value;

}

else

{

result.Add(keyValuePair.Key, keyValuePair.Value);

}

}

上面的代码首先创建了两个哈希表 dict1 和 dict2,然后利用两个 for 循环将这两个哈希表集合合并到 result 中。由于 dict2 中可能存在与 dict1 中相同的键,因此需要在添加到 result 中时进行键值的加和操作。

2.2 使用 Linq 方法

可以使用 Linq 的 Union 和 GroupBy 方法将两个哈希表集合合并。Union 方法将两个哈希表合并后去除重复的键值对,GroupBy 方法按照键进行分组并求和。下面是代码实现:

var dict1 = new Dictionary<string, int>{{"apple", 5}, {"banana", 3}, {"orange", 2}};

var dict2 = new Dictionary<string, int>{{"pear", 4}, {"apple", 6}, {"banana", 2}};

var result = dict1.Union(dict2).GroupBy(x => x.Key).ToDictionary(x => x.Key, x => x.Sum(y => y.Value));

上面的代码首先创建了两个哈希表 dict1 和 dict2,然后使用 Union 方法将它们合并,使用 GroupBy 方法按照键进行分组并求和,最后转换成字典 result。

3. 总结

在 C# 中,合并两个哈希表集合可以使用直接使用 for 循环或者 Linq 方法。直接使用 for 循环更加直观,但是代码量较大。Linq 方法更加简练,但是可读性稍差。根据实际需求选择合适的方法即可。

后端开发标签