C#两个List集合对比,交集,并集,差集

定义两个List集合

List list1 = new List();
list1.Add(“1”);
list1.Add(“2”);
list1.Add(“3”);
list1.Add(“5”);
list1.Add(“6”);

List list2 = new List();
list2.Add(“2”);
list2.Add(“3”);
list2.Add(“7”);
list2.Add(“8”);

var jiaoji = list1.Intersect(list2).ToList();//交集

foreach (var item in jiaoji)
{
Debug.LogError(“j交集值===>>” + item); //输出的值: 2,3
}

var bingji = list1.Union(list2).ToList();//并(全)集

foreach (var item in bingji)
{
Debug.LogError(“并(全)集===>>” + item);//输出的值:1,2,3,5,6,7,8
}

var chaji = list1.Except(list2).ToList();//差集

foreach (var item in chaji)
{
Debug.LogError(“差集===>>” + item); //输出的值:1,5,6
}

C#中,你可以使用`List<int>`类来创建整数集合,并使用`Enumerable.Range`来生成初始的随机数范围。然后,可以使用LINQ的`Intersect`、`Except`和`Union`方法来求出两个集合交集差集并集。以下是实现这一功能的一个示例代码: ```csharp using System; using System.Collections.Generic; using System.Linq; public class RandomNumberSets { public static void Main() { Random rand = new Random(); HashSet<int> set1 = new HashSet<int>(); HashSet<int> set2 = new HashSet<int>(); // 生成两个包含50个范围在[100,10000)之间互不相同整数的集合 while (set1.Count < 50 || set2.Count < 50) { int num1 = rand.Next(100, 10000); int num2 = rand.Next(100, 10000); if (!set1.Contains(num1)) { set1.Add(num1); } if (!set2.Contains(num2)) { set2.Add(num2); } } // 求两个集合并集交集差集 var unionSet = set1.Union(set2); // 并集 var intersectSet = set1.Intersect(set2); // 交集 var differenceSet1 = set1.Except(set2); // 第一个集合相对于第二个集合差集 var differenceSet2 = set2.Except(set1); // 第二个集合相对于第一个集合差集 // 输出结果 Console.WriteLine("集合1: " + string.Join(", ", set1)); Console.WriteLine("集合2: " + string.Join(", ", set2)); Console.WriteLine("并集: " + string.Join(", ", unionSet)); Console.WriteLine("交集: " + string.Join(", ", intersectSet)); Console.WriteLine("集合1相对于集合2的差集: " + string.Join(", ", differenceSet1)); Console.WriteLine("集合2相对于集合1的差集: " + string.Join(", ", differenceSet2)); } } ``` 在这段代码中,我们使用了`HashSet<int>`来存储集合,因为`HashSet`不允许重复的元素,并且可以快速判断元素是否存在以及进行集合操作。接着,我们使用`while`循环来确保每个集合都填充了50个随机生成的不重复整数。最后,我们使用LINQ方法来求解并集交集差集,并将它们输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值