c# hash 泛型_【c# .net】Hashtable Dictionary List 谁效率更高

一 . 三个容器各自特点

1 . hashtable 散列表(也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。

2 . List 是针对特定类型、任意长度的一个泛型集合,实质其内部是一个数组。

3 . Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值,实质其内部也是散列表。

二 . 插入效率

先以10万条为基础,然后增加到100万

Hashtable hashtable = new Hashtable();

List list = new List();

Dictionary dic = new Dictionary();

object value1 =123; object value2 =456;

var watchH = new Stopwatch();

var watchL = new Stopwatch();

var watchD = new Stopwatch();

//Hashtable watchH.Start();

for (int i = 0; i < 100000; i++)

{

hashtable.Add( i.ToString(), value1);

}

Console.WriteLine(watchH.Elapsed);

//List watchL.Start();

for (int i = 0; i < 100000; i++)

{

list.Add(i.ToString());

}

Console.WriteLine(watchL.Elapsed);

//Dictionary watchD.Start();

for (int i = 0; i < 100000; i++)

{

dic.Add(i.ToString(), value2);

}

Console.WriteLine(watchD.Elapsed);

Console.WriteLine("插入结束!");

10W条数据测试结果:

100W条数据测试结果:

结果:

第一名 List

第二名 Dictionary

第三名 hashtable

三 . 查找效率

同样以10万次和100万次做测试 插入的代码就不重复贴与上面一致

var watchH = new Stopwatch();

var watchL = new Stopwatch();

var watchD = new Stopwatch();

//HashTable

watchH.Start();

object valueH = hashtable["90000"];

Console.WriteLine(watchH.Elapsed);

//List

watchL.Start();

string valueL = list.Find(o => o == "90000");

Console.WriteLine(watchL.Elapsed);

//Dictionary

watchD.Start();

object valurd = dic["90000"];

Console.WriteLine(watchD.Elapsed);

Console.WriteLine("查找完毕!");

Console.Read();

10W条数据测试结果:

100W条数据测试结果:

结果:

第一名 hashtable

第二名 Dictionary

第三名 ListHashtable Dictionary List 谁效率更高​www.cnblogs.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值