一 . 三个容器各自特点
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