Hastable & Dictionary<k,v

2017-07-25  本文已影响6人  空谷清音秀

摘自:地址

1.单线程程序推荐使用Dictionary:

2.多线程程序推荐使用Hastable:

3.Dictionary具有按照 插入顺序排序 的特性(调用Remove方法后顺序被打乱)



使用哈希表保存集合元素时(键/值对),首先会根据键自动计算哈希代码,以确定该元素的保存位置,再将元素的值放入到相应位置所指向的桶中。
在查找时,再次通过键所对应的哈希代码指向的桶中进行搜索,减少查找元素进行比较的次数。

Hastable中的Key/Value均为Object值,由包含键值对的桶组成。存储桶比大多数集合中的搜索和检索更为便捷。

Hastable的优点:

遍历Hastable的两种方式:

因为Hastable元素都是键值对,所以元素类型既不是键的类型,也不是值的类型,而是DictionaryEntry类型

方法一:

foreach(System.Collections.DictionaryEntry de in ht)
{
    //因为Hastable内存储元素的默认类型是Object,所以需要进行类型转换才可以输出
     Console.WriteLine(de.Key.ToString());
     Console.WriteLine(de.Value.ToString());
}

方法二:

System.Collections.IDictionaryEnumerator enumerator = ht.GetEnumerator();
while(enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Key);
    Console.WriteLine(enumerator.Value);
}

Dictionary

foreach(string key in myDictionary.Keys)
{
    foreach(string val in myDictionary[key])
    {
          Console.WirteLine("Key : " + key + "/nValue : " + val);
    }
}

因为Dictionary是KeyValue的集合,所以Dictionary中的元素类型并非是Key类型或Value类型。
相反,元素类型是键类型和值类型的键值对。

上一篇 下一篇

猜你喜欢

热点阅读