List<T> 与 Dictionary<K,T> 的查询效率区别

都知道Dictionary<K,T>  时间复杂度效率是0(1)  List<T> 0(n)

闲来无聊写个代码测试下对比下

Dictionary<int, CardInfo> dic = new Dictionary<int, CardInfo>();
            List<CardInfo> list = new List<CardInfo>();
            int i = 0;
            for (i = 0; i < 5000000; i++)
            {
                dic.Add(i, new CardInfo() { CardNo = i.ToString(), CardValue = i.ToString() });
                list.Add(new CardInfo() { CardNo = i.ToString(), CardValue = i.ToString() });
            }

            var resultDic = new List<CardInfo>();
            Random rend = new Random();


            var watchH = new Stopwatch();
            watchH.Start();
            for (int j = 0; j < 100; j++)
            {
                var index = rend.Next(5000000);
                resultDic.Add(dic[index]);
            }
            watchH.Stop();
            Console.WriteLine($"resultDic:{watchH.ElapsedMilliseconds}总时长");
            watchH.Restart();
            var result = new List<CardInfo>();
            for (int k = 0; k < 100; k++)
            {
                var index = rend.Next(5000000);
                result.Add(list.FirstOrDefault(x => x.CardNo == index.ToString()));
            }
            watchH.Stop();
            Console.WriteLine($"result:{watchH.ElapsedMilliseconds}总时长");

            Console.Read();

吓一跳啊兄弟们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值