求两个集合的交集和并集C#

时间:2022-12-23 12:06:38

我是用hashset<T>来实现的 具体如代码所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace JiaoJi
{
class Program
{
static void Main(string[] args)
{
int [] arrA=new int[]{,,,,,,,};
int [] arrB=new int[]{,,,,};
HashSet<int> hashset=new HashSet<int>();
hashset = JiaoJi(arrA, arrB);
HashSet<int> hashsetB = new HashSet<int>();
hashsetB = BingJi(arrA, arrB);
Console.Write("他们交集如下:");
foreach (var i in hashset)
{
Console.Write(i);
}
Console.WriteLine();
Console.Write("他们的并集如下:");
foreach (var i in hashsetB)
{
Console.Write(i);
}
Console.ReadKey(); }
/// <summary>
/// 求两个数组的并集
/// </summary>
/// <param name="arrayA"></param>
/// <param name="arrayB"></param>
/// <returns></returns>
static HashSet<int> BingJi(int[] arrayA, int[] arrayB)
{
HashSet<int> hashset = new HashSet<int>();
for (int i = ; i < arrayA.Length; i++)
{
hashset.Add(arrayA[i]);
}
for (int j = ; j < arrayB.Length; j++)
{
hashset.Add(arrayB[j]); }
return hashset; }
/// <summary>
/// 求两个集合的交集
/// </summary>
/// <param name="arrayA">传入数组a</param>
/// <param name="arrayB">传入数组B</param>
/// <returns></returns>
static HashSet<int> JiaoJi(int[] arrayA, int[] arrayB)
{
//求两个集合的交集 //hashset的就是专门求两个交集而生的 或者并集 他的add方法的 会判断
//如果你存在了这个记录,他就会返回false 这里就是利用了这个思路
HashSet<int> s = new HashSet<int>();
HashSet<int> s2 = new HashSet<int>();
for (int i = ; i < arrayA.Length; i++)
{
s.Add(arrayA[i]);
}
for (int j = ; j < arrayB.Length; j++)
{
if (s.Add(arrayB[j]) == false)
{
s2.Add(arrayB[j]);
}
}
return s2;
}
}
}

结果如图:求两个集合的交集和并集C#

如果有什么疑问,欢迎大家一起讨论学习