C#中哈希表与List的比较

本文探讨了C#中List与哈希表(Hashtable与Dictionary)的创建过程、实验执行结果和总结。实验显示哈希表在查找速度上显著优于List,但建立时间较长,适合处理大量数据的搜索;而List在小规模数据时更适用。推荐在需要高效查找且能接受额外空间占用的情况下使用Dictionary。
摘要由CSDN通过智能技术生成

简单概念

在c#中,List是顺序线性表(非链表),用一组地址连续的存储单元依次存储数据元素的线性结构。

哈希表也叫散列表,是一种通过把关键码值映射到表中一个位置来访问记录的数据结构。c#中的哈希表有Hashtable,Dictionary,Hashtable继承自Map,实现一个key-value映射的关系。Dictionary则是一种泛型哈希表,不同于Hashtable的key无序,Dictionary是按照顺序存储的。哈希表的特点是:1.查找速度快,2.不能有重复的key。

创建过程

在c#中,我们实例化list时,如果不指定容量,则内部会生成一个静态的空数组,有添加操作时,实例化为一个长度为4的数组,满了以后,自动扩充为两倍的容量。

哈希表也是类似的情况,先默认生成一个长度为11的哈希表,满后,自动添加,而添加规则是内部循环素数数组,稍大于当前的长度,比如15 ,则长度设定为17。在哈希表创建可分为确定哈希函数,解决哈希冲突两个步骤。

实验执行结果

下面进行两个实验,实验一,比较Hashtable,Dictionary,List三者在不同长度时的创建速度,实验二比较三者在不同时间时的查找速度。(实验代码在最后)

硬件:intel core 2 quad cpu @ 2.66GHZ,4GB内存。

软件:windows 2008,2010 VS编译环境。

表1.三者的创建时间

长度\类型

Hashtable

Dictionary

List

1

0.001s

0s

0s

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值