c#中散列表和字典有什么区别

  介绍

这篇文章给大家介绍c#中散列表和字典有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1, Dictionary在使用中是顺序存储的,而哈希表由于使用的是哈希算法进行数据存储,是无序的。

2,字典的键和值是泛型存储,哈希表的键和值都是对象

3,字典是泛型存储,不需要进行类型转换,哈希表由于使用对象,在存储或者读取值时都需要进行类型转换,所以比较耗时

4,单线程程序中推荐使用字典,有泛型优势,且读取速度较快,容量利用更充分。多线程程序中推荐使用散列表,默认的Hashtable允许单线程写入,多线程读取,对哈希表进一步调用同步()方法可以获得完全线程安全的类型。而词典非线程安全,必须人为使用锁语句进行保护,效率大减。

5,在通过代码测试的时候发现关键是整数型词典的效率比Hashtable快,如果关键是字符串型,字典的效率没有Hashtable快。

对于如何进行选择,个人倾向于使用字典,原因是:

1,字典是可排序的,散列表如果想排序还需要采用别的方式进行

2,词典有泛型优势,效率要高

<强> Hashtable用法举例:

Hashtable  Hashtable =, new 散列表();   ,,,,,,,,,,,hashtable.Add (“id",,“BH0001");   ,,,,,,,,,,,hashtable.Add (“name",,“TM");   ,,,,,,,,,,,hashtable.Add (“sex",,“男”);   ,,,,,,,,,,,Console.WriteLine (“\ t 键\ t 值“);   ,,,,,,,,,,,foreach  (DictionaryEntry  dicEntry  hashtable拷贝)   ,,,,,,,,,,,,,,,Console.WriteLine (“\ t “, +, dicEntry.Key  +,“\ t “, +, dicEntry.Value);

运行结果:

 C #中散列表和字典有什么区别

<强>字典用法举例:

Dictionary<字符串,string>, dictionary =, new  Dictionary<字符串,string> ();   ,,,,,,,,,,,dictionary.Add (“id",,“BH0001");   ,,,,,,,,,,,dictionary.Add (“name",,“TM");   ,,,,,,,,,,,dictionary.Add (“sex",,“男”);   ,,,,,,,,,,,Console.WriteLine (“\ t 键\ t 值“);   ,,,,,,,,,,,foreach  (var  dic 拷贝字典)   ,,,,,,,,,,,,,,,Console.WriteLine (“\ t “, +, dic.Key  +,“\ t “, +, dic.Value);

运行结果:

 C #中散列表和字典有什么区别

c#。net 3.5以上的版本引入Linq后,字典字典排序变得十分简单,用一句类似sql数据库查询语句即可搞的定,不过、。net 2.0排序要稍微麻烦一点。下面举例说明字典的排序方法:

<强>字典按值值排序

Dictionary<字符串,int>, dic =, new  Dictionary<字符串,int> ();   dic.Add (“index.html", 50);   dic.Add (“product.html",, 13);   dic.Add (“aboutus.html",, 4);   dic.Add (“online.aspx",, 22);   dic.Add (“news.aspx",, 18);   private  static  void  DictonarySort(字符串,Dictionary, dic)   ,,,,,,,{   ,,,,,,,,,,,var  dicSort =,得到objDic 拷贝dic  orderby  objDic.Value  descending  select  objDic;   ,,,,,,,,,,,foreach (字符串,KeyValuePair, kvp 拷贝dicSort)   ,,,,,,,,,,,,,,,Console.WriteLine (kvp.Key  +,“:“, +, kvp.Value );   ,,,,,,,}

排序结果:

索引。html: 50
在线。aspx: 22
新闻。aspx: 18
产品。html: 13
aboutus。html: 4

上述代码是按降序(倒序)排列,如果想按升序(顺序)排列,只需要把变量dicSort右边的下行去掉即可。

<强> c#字典键排序

如果要按排键序,只需要把变量dicSort右边的objDic。改值为objDic。关键即可。

c#是什么

c#是一个简单,通用,面向对象的编程语言,它由微微软软开发,继承了C和c++强大功能,并且去掉了一些它们的复杂特性,c#综合了VB简单的可视化操作和c++的高运行效率,以其强大的操作能力,优雅的语法风格,创新的语言特性和便捷的面向组件编程从而成为。净开发的首选语言,但它不适用于编写时间急迫或性能非常高的代码,因为c#缺乏性能极高的应用程序所需要的关键功能。

关于c#中散列表和字典有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

c#中散列表和字典有什么区别