首页 > 其他分享 >两个集合对比

两个集合对比

时间:2023-02-15 10:44:32浏览次数:40  
标签:Console watch var WriteLine 集合 两个 listA 对比 listB

上代码,主要是学习到了如何对比出两个List集合的和差交并集方法

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("-------------------------------------");

        }
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

标签:Console,watch,var,WriteLine,集合,两个,listA,对比,listB
From: https://www.cnblogs.com/djd66/p/17121936.html

相关文章

  • 十年后的第一篇:记录对两个面试问题的思考
    太久没写过博客了,用户名密码甚至连用哪个邮箱注册的都不记得了,如果不是最近面试官要看的话实在是不想翻出来(如果面试官看到请不要在意)。面试过程中被问了一些刁钻的问题(当......
  • 三种懒加载方式及对比
    利用getBoundingClientRect优点:容易理解,操作easy缺点:只能用于全屏滚动的列表,不适用于局部滚动,譬如下图<!DOCTYPEhtml><htmllang="en"><head><metach......
  • 5、开发中如何选择集合实现类
    在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特性进行选择,分析如下:先判断存储的类型(一组对象[单列]或一组键值对[双列])一组对象[单列]:Collecti......
  • m基于功率谱,高阶累积量和BP神经网络-GRNN网络的调制方式识别仿真,对比2psk,4PSK,2FSK
    1.算法描述首先区分大类的话采用的基于功率谱提取的len参数(峰值频率间隔),用峰值个数来代替,这样能很好的区分大类把MFSK和MPSK信号区分开。针对MPSK:一:基于瞬时参数——Char......
  • m基于功率谱,高阶累积量和BP神经网络-GRNN网络的调制方式识别仿真,对比2psk,4PSK,2FSK
    1.算法描述       首先区分大类的话采用的基于功率谱提取的len参数(峰值频率间隔),用峰值个数来代替,这样能很好的区分大类把MFSK和MPSK信号区分开。 针对MPSK: ......
  • 集合面试题
    Collection:①List:  Vector(Stack),  ArrayList,  LinekdList ②Set:  HashSet(LinkedHashSet),  TreeSet③Queue:  PriorityQueue,  ArrayDeque......
  • 谷歌系平台和外贸B2B平台对比
    今天,我们将以问答的形式帮助您更深入地理解这个话题。1)为什么国外B2B平台很少?只有中国和印度是B2B最受欢迎的国家,其他国家没有像样的B2B,原因如下:▼有些国家工业生产和国际贸......
  • 【Python21天学习挑战赛】集合 & 数据类型补充
    开头一叙:无论是以后学习需要或者是三年后的工作需要,都需要用到python的工具,也接着这次活动的机会,把python系统的学一遍。跟着大佬,让python知识从入门到精通。文章目录​​......
  • python计算两个坐标点的距离
    #-*-coding:utf-8-*-"""@author:14931@file:trianglearea.py@time:2023/02/14@desc:"""importmath#导入模块classPoint:#创建类,得到一个点def__i......
  • 如何判断两个对象是否相等
    Object.is()Object.is方法只能判断这两个对象的引用地址是否一致,但是要比对两个对象的内容是否相等时就不能用这个方法了letobj1={a:11,b:22......