当前位置:
首页 > temp > 简明python教程 >
-
两个集合对比
在GitHub上有个项目,本来是作为自己研究学习.net core的Demo,没想到很多同学在看,还给了很多星,所以觉得应该升成3.0,整理一下,写成博分享给学习.net core的同学们。
项目名称:Asp.NetCoreExperiment
项目地址:https://github.com/axzxs2001/Asp.NetCoreExperiment
今天先分享几个对集合知识点。
两个集合对比代码:
GitHub代码库(https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/Common/CompareCollections)
1 static void Main(string[] args) 2 { 3 var leftKes = new List<string>() { "111111", "222222", "333333", "444444" }; 4 var rightKes = new List<string>() { "333333", "444444", "555555", "666666" }; 5 6 Console.WriteLine("Left集合"); 7 Console.WriteLine(string.Join(',', leftKes)); 8 Console.WriteLine("-------------------------------------"); 9 10 Console.WriteLine("Right集合"); 11 Console.WriteLine(string.Join(',', rightKes)); 12 Console.WriteLine("-------------------------------------"); 13 14 Console.WriteLine("Left多的 "); 15 Console.WriteLine(string.Join(',', leftKes.Except(rightKes))); 16 Console.WriteLine("-------------------------------------"); 17 18 Console.WriteLine("Right多的 "); 19 Console.WriteLine(string.Join(',', rightKes.Except(leftKes).ToList())); 20 Console.WriteLine("-------------------------------------"); 21 22 Console.WriteLine("Left和Right交集 "); 23 Console.WriteLine(string.Join(',', rightKes.Intersect(leftKes))); 24 Console.WriteLine("-------------------------------------"); 25 26 Console.WriteLine("Left和Right并集 "); 27 Console.WriteLine(string.Join(',', leftKes.Union(rightKes))); 28 Console.WriteLine("-------------------------------------"); 29 30 Console.WriteLine("Left和Right对称差集 "); 31 Console.WriteLine(string.Join(',', leftKes.Union(rightKes).Except(rightKes.Intersect(leftKes)))); 32 Console.WriteLine("-------------------------------------"); 33 34 }
运行速度测试代码:
GitHub代码库(https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/Common/CSharp%E8%8E%B7%E5%8F%96%E4%B8%A4%E4%B8%AA%E9%9B%86%E5%90%88%E4%B8%AD%E7%9B%B8%E5%90%8C%E7%9A%84%E5%92%8C%E4%B8%8D%E5%90%8C%E7%9A%84%E7%BB%93%E6%9E%9C)
1 static void Test() 2 { 3 Console.WriteLine("-------------------开始初始化集合-------------------"); 4 #region 制造数据 5 var watch = new Stopwatch(); 6 watch.Start(); 7 var listA = new List<string>(); 8 var listB = new List<string>(); 9 for (int i = 0; i < 1000000; i++) 10 { 11 var id = Guid.NewGuid().ToString(); 12 listA.Add(id); 13 } 14 listB.AddRange(listA); 15 //制造B的差异数据 16 for (int i = 0; i < 10; i++) 17 { 18 var tick = DateTime.Now.Ticks; 19 var random = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)); 20 var index = random.Next(1, 100000); 21 listB[index] = Guid.NewGuid().ToString(); 22 } 23 watch.Stop(); 24 TimeSpan span = watch.Elapsed; 25 Console.WriteLine("制造数据总共花费{0}ms.", span.TotalMilliseconds); 26 #endregion 27 28 #region 比较 29 Console.WriteLine("-------------------开始比较-------------------"); 30 Console.WriteLine("-------------------listA中交集外---------------------"); 31 watch = new Stopwatch(); 32 watch.Start(); 33 var listD = listA.Except(listA.Intersect(listB)); 34 watch.Stop(); 35 span = watch.Elapsed; 36 Console.WriteLine("listA中交集外 总共花费{0}ms.", span.TotalMilliseconds); 37 foreach (var item in listD) 38 { 39 Console.WriteLine(item); 40 } 41 Console.WriteLine("----------------------listB中交集外--------------------"); 42 watch = new Stopwatch(); 43 watch.Start(); 44 var listE = listB.Except(listA.Intersect(listB)); 45 watch.Stop(); 46 span = watch.Elapsed; 47 Console.WriteLine("listB中交集外 总共花费{0}ms.", span.TotalMilliseconds); 48 foreach (var item in listE) 49 { 50 Console.WriteLine(item); 51 } 52 Console.WriteLine("--------------listA和listB中交集外-------------------"); 53 watch = new Stopwatch(); 54 watch.Start(); 55 var listF = listA.Concat(listB).Except(listA.Intersect(listB)); 56 watch.Stop(); 57 span = watch.Elapsed; 58 Console.WriteLine("listA和listB中交集外 总共花费{0}ms.", span.TotalMilliseconds); 59 foreach (var item in listF) 60 { 61 Console.WriteLine(item); 62 } 63 #endregion 64 }
对比的运行时长结果:
我的配置是:
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数