在 GitHub 上有个项目, 本来是作为自己研究学习. net core 的 Demo, 没想到很多同学在看, 还给了很多星, 所以觉得应该升成 3.0, 整理一下, 写成博分享给学习. net core 的同学们.
项目名称: Asp.NetCoreExperiment
项目地址: https://github.com/axzxs2001/Asp.NetCoreExperiment
今天先分享几个对集合知识点.
两个集合对比代码:
GitHub 代码库 ()
- static void Main(string[] args)
- {
- var leftKes = new List<string>() { "111111", "222222", "333333", "444444" };
- var rightKes = new List<string>() { "333333", "444444", "555555", "666666" };
- Console.WriteLine("Left 集合");
- Console.WriteLine(string.Join(',', leftKes));
- Console.WriteLine("-------------------------------------");
- Console.WriteLine("Right 集合");
- Console.WriteLine(string.Join(',', rightKes));
- Console.WriteLine("-------------------------------------");
- Console.WriteLine("Left 多的");
- Console.WriteLine(string.Join(',', leftKes.Except(rightKes)));
- Console.WriteLine("-------------------------------------");
- Console.WriteLine("Right 多的");
- Console.WriteLine(string.Join(',', rightKes.Except(leftKes).ToList()));
- Console.WriteLine("-------------------------------------");
- Console.WriteLine("Left 和 Right 交集");
- Console.WriteLine(string.Join(',', rightKes.Intersect(leftKes)));
- Console.WriteLine("-------------------------------------");
- Console.WriteLine("Left 和 Right 并集");
- Console.WriteLine(string.Join(',', leftKes.Union(rightKes)));
- Console.WriteLine("-------------------------------------");
- Console.WriteLine("Left 和 Right 对称差集");
- Console.WriteLine(string.Join(',', leftKes.Union(rightKes).Except(rightKes.Intersect(leftKes))));
- Console.WriteLine("-------------------------------------");
- }
运行速度测试代码:
GitHub 代码库 ()
- static void Test()
- {
- Console.WriteLine("------------------- 开始初始化集合 -------------------");
- #region 制造数据
- var watch = new Stopwatch();
- watch.Start();
- var listA = new List<string>();
- var listB = new List<string>();
- for (int i = 0; i <1000000; i++)
- {
- var id = Guid.NewGuid().ToString();
- listA.Add(id);
- }
- listB.AddRange(listA);
- // 制造 B 的差异数据
- for (int i = 0; i < 10; i++)
- {
- var tick = DateTime.Now.Ticks;
- var random = new Random((int)(tick & 0xffffffffL) | (int)(tick>> 32));
- var index = random.Next(1, 100000);
- listB[index] = Guid.NewGuid().ToString();
- }
- watch.Stop();
- TimeSpan span = watch.Elapsed;
- Console.WriteLine("制造数据总共花费 {0}ms.", span.TotalMilliseconds);
- #endregion
- #region 比较
- Console.WriteLine("------------------- 开始比较 -------------------");
- Console.WriteLine("-------------------listA 中交集外 ---------------------");
- watch = new Stopwatch();
- watch.Start();
- var listD = listA.Except(listA.Intersect(listB));
- watch.Stop();
- span = watch.Elapsed;
- Console.WriteLine("listA 中交集外 总共花费 {0}ms.", span.TotalMilliseconds);
- foreach (var item in listD)
- {
- Console.WriteLine(item);
- }
- Console.WriteLine("----------------------listB 中交集外 --------------------");
- watch = new Stopwatch();
- watch.Start();
- var listE = listB.Except(listA.Intersect(listB));
- watch.Stop();
- span = watch.Elapsed;
- Console.WriteLine("listB 中交集外 总共花费 {0}ms.", span.TotalMilliseconds);
- foreach (var item in listE)
- {
- Console.WriteLine(item);
- }
- Console.WriteLine("--------------listA 和 listB 中交集外 -------------------");
- watch = new Stopwatch();
- watch.Start();
- var listF = listA.Concat(listB).Except(listA.Intersect(listB));
- watch.Stop();
- span = watch.Elapsed;
- Console.WriteLine("listA 和 listB 中交集外 总共花费 {0}ms.", span.TotalMilliseconds);
- foreach (var item in listF)
- {
- Console.WriteLine(item);
- }
- #endregion
- }
对比的运行时长结果:
我的配置是:
来源: https://www.cnblogs.com/axzxs2001/p/11637113.html