Dictionary和Hashtable的一些异同
Dictionary和Hashtable 区别:
Dictionary |
Hashtable |
| 支持范型 | 不支持 |
| 需要自己做线程同步 | 通过调用 Synchronized() 方法可以获得线程安全的类型 |
| 枚举类型是KeyValuePair | 枚举类型是DictionaryEntry |
| .Net 2.0开始有 | .Net 1.0开始有 |
| System.Collections.Generic命名空间下 | System.Collections命名空间下 |
| 获取同一个不存在的key时抛出异常 | 获取同一个不存在的key时返回NULL |
| 值类型不需要装箱/拆箱,可能会更快些 | 值类型value types需要装箱/拆箱boxing/unboxing |
相同点:
内部都是hashtable实现,通过key访问数据比较快
都需要不可变的,唯一的key
key都需要有自己的GetHashCode()方法
其他类似的.Net 集合(用于替代Dictionary和备选项)Hashtable的
ConcurrentDictionary - 用于多并发、线程安全的字典
HybridDictionary - System.Collections.Specialized命名空间下,优化了性能(在集合较小时,使用 ListDictionary 来实现 IDictionary,然后当集合变大时,切换到Hashtable。)
OrderedDictionary - System.Collections.Specialized命名空间下,值可以通过数字索引访问,因为元素添加的时候已经被指定位置了。public void Insert(int index, object key, object value);
SortedDictionary - 元素插入时自动的被排序
StringDictionary - System.Collections.Specialized命名空间下,将键和值强类型化为字符串而不是对象,对做相应的优化。
Dictionary和Hashtable的一些异同的更多相关文章
- 【算法】272-每周一练 之 数据结构与算法(Dictionary 和 HashTable)
这是第五周的练习题,上周忘记发啦,这周是复习 Dictionary 和 HashTable. 下面是之前分享的链接: [算法]200-每周一练 之 数据结构与算法(Stack) [算法]213-每周一 ...
- 每周一练 之 数据结构与算法(Dictionary 和 HashTable)
这是第五周的练习题,上周忘记发啦,这周是复习 Dictionary 和 HashTable. 下面是之前分享的链接: 1.每周一练 之 数据结构与算法(Stack) 2.每周一练 之 数据结构与算法( ...
- C#中Dictionary,Hashtable,List的比较及分析
一. Dictionary与Hashtable Dictionary与Hashtable都是.Net Framework中的字典类,能够根据键快速查找值 二者的特性大体上是相同的,有时可以把Dicti ...
- [ASP.NET] Dictionary 和 Hashtable 区别
Dictionary和Hashtable 是两个比较常用的表示键/值的集合,两者在实际使用过程中有何区别呢? 具体区别如下: 1. Hashtable不支持泛型,而Dictionary支持泛型. 2. ...
- Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较
0. 前言 HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的. (2)HashMap的键和值都允许有null存在,而H ...
- Dictionary,hashtable, stl:map有什么异同?
相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采用传统的哈希算法:探测散列算法,而字典则采用的是散列拉链算法,效率较高, ...
- dictionary 和 hashtable 区别
区别:1,Dictionary支持泛型,而Hashtable不支持. 2,Dictionary没有装填因子(Load Facto)概念,当容量不够时才扩容(扩容跟Hashtable一样,也是两倍于当前 ...
- List、dictionary、hashtable、ArrayList集合
集合的引用命名空间在 system.Collections下 1.为什么引入集合 因为数组长度是固定的,为了建立一个动态的"数组",所以引入了集合. 2.为什么引入ArrayLis ...
- javascript实现集合Set、字典Dictionary、HashTable
集合是由一组无序且唯一(即不能重复)的项组成的.这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中. function Set() { this.items = {}; } S ...
随机推荐
- 工具04_SQL Trace/DBMS_SYSTEM
2014-06-25 Created By BaoXinjian
- Codeforces Round #381 (Div. 2)A. Alyona and copybooks(dfs)
A. Alyona and copybooks Problem Description: Little girl Alyona is in a shop to buy some copybooks f ...
- 动画--android图片点击放大动画,并遮挡旁边的控件
http://blog.csdn.net/s13488941815/article/details/40649823: 首先是点击放大可以使用android自带的缩放动画,因为要遮盖其他控件,就需要控 ...
- 从零开始系列-R语言基础学习笔记之二 数据结构(二)
在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...
- Erlang 参考资料
Erlang 官方文档 Distributed Erlang Erlang 教程中文版 %设定模块名 -module(tut17). %导出相关函数 -export([start_ping/1, st ...
- Android Studio in OSX 提高工作效率的快捷键
前言 本篇文章参考了<倍数提高工作效率的Android Studio>一文,快捷键基于OS X系统. OS X Yosemite 10.10.5 Android Studio 1.3.1 ...
- echo同时输出到多个文件中
echo "test"| tee -a file1 file2 如果想去掉在屏幕上的显示 echo "test"| tee -a file1 file2 > ...
- JavaScript笔记基础篇(三)
针对前段JS获取当前时间或者对时间数据处理方法汇总: javascript 字符串转化为日期 Java代码 var s="2010-5-18 12:30:20"; var t= ...
- Access denied for user 'Administrator'@'localhost' (using password: YES)
Access denied for user 'Administrator'@'localhost' (using password: YES) 配置文件中明明是用的root <entry ke ...
- 正则表达式test验证的“bug”
在使用正则表达式对某些字符串进行验证时,我们常常会使用到test方法,而该方法也隐藏着一个陷阱,今天就让我们来看一下这个问题. var str = 'hello jack, hello rose'; ...