在.NET 下的HashTable 和Dictionary 都是表示键值对的集合,那么我们该如何选择使用Hash Table 还是使用Dictionary呢,他们的区别如下:
1、Dictionary的实现是顺序存储的,而HashTable由于使用的是哈希算法进行数据的存储,是无序的;
2、Dictionary的key和value是泛型存储,hashtable的key和value都是objext
3、Dictionary是泛型存储,不需要进行类型的下转换,hashtable由于使用的是objct。在读取值时需要进行类型的转换,所以比较耗时;
4、单线程程序中推荐使用Dictionary,有泛型优势,且读取速度较快,容易利用更充分,在多线程程序中推荐使用hashtable,默认的hashtable允许单线程写入,多西拿出读取,对哈市table进一步调用Sysnchronized()方法可以获得完全线程安全的类型。而Dirctionary非线程安全,必须认为的使用lock语句进行保护,效率大减;
5、key是整形的dictionary的效率要比hashtable快,如果是字符型的而Dictiona没有hashtable快;