C#中使用Dictionary实现Map数据结构

2011-03-31 19:48:30|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C#|来源:唯设编程网

在VC中使用过CMap以及在Java中使用过Map的朋友应该很熟悉,使用Map可以方便实现基于键值对数据的处理,在C#中,你就需要实现IDictionary接口的关键字值集合类,允许通过关键字(如字符串名)进行索引,这也可以使用索引符来完成,但这种索引符参数是与存储的项相关联的关键字,而不是int索引。通常情况下,我们使用泛型类Dictionary来实现这样的功能。

Dictionary泛型类提供快速的基于键值的元素查找,Dictionary<K, V>是一个泛型 ,他本身有集合的功能有时候可以把它看成数组,它的结构是这样的:Dictionary<[key], [value]> ,他的特点是存入对象是需要与[key]值一一对应的存入该泛型 ,通过某一个一定的[key]去找到对应的值。Dictionary<K, V>泛型类在定义变量是需要指定当前存储的键值对类型,如:

Dictionary<string, string> hashMap = new Dictionary<string, string>();

补充说明:
1、必须包含名空间System.Collection.Generic
2、Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)
3、键必须是唯一的,而值不需要唯一的
4、键和值都可以是任何类型(比如:string, int, 自定义类型,等等)
5、通过一个键读取一个值的时间是接近O(1)
6、键值对之间的偏序可以不定义

首先给出一个使用泛型类Dictionary<K, V>的完整例子,其中包含了创建和初始化一个Dictionary对象、判断是否存在相应的key并显示、遍历所有的Keys、遍历所有的Values、遍历整个字典。
C#代码:

/// <summary>  
/// Dictionary的基本用法  
/// </summary>  
static void DictionaryDemo()
{
    Dictionary<int, string> dict = new Dictionary<int, string>();
    dict.Add(1, "111");
    dict.Add(2, "222");
    //判断是否存在相应的key并显示  
    if (dict.ContainsKey(2))
    {
        Console.WriteLine(dict[2]);
    }
    //遍历Keys  
    foreach (var item in dict.Keys)
    {
        Console.WriteLine("Key:{0}", item);
    }
    //遍历Values  
    foreach (var item in dict.Values)
    {
        Console.WriteLine("value:{0}", item);
    }
    //遍历整个字典  
    foreach (var item in dict)
    {
        Console.WriteLine("key:{0} value:{1}", item.Key, item.Value);
    }
}

下面对一些比较重要的用法进行补充介绍:

1.在字典Dictionary<K, V>中查找指定键的元素

        static void Test(string[] args)
        {
            Dictionary<string, int> d = new Dictionary<string, int>();
            d.Add("C#", 2);
            d.Add("VB", 1);
            d.Add("C", 0);
            d.Add("C++", -1);
            //判断字典中是否包含键为“VB”的元素
            if (d.ContainsKey("VB")) // True
            {
                int p = d["VB"];
                Console.WriteLine(p);
            }
            //判断字典中是否包含键为“C”的元素
            if (d.ContainsKey("C"))
            {
                int p1 = d["C"];
                Console.WriteLine(p1);
            }
        }

2.在字典Dictionary<K, V>中删除指定键的元素

        static void Test(string[] args)
        {
            Dictionary<string, int> d = new Dictionary<string, int>();
            d.Add("C#", 2);
            d.Add("VB", 1);
            d.Add("C", 0);
            d.Add("C++", -1);
            //删除键为“C”的元素
            d.Remove("C");
            //删除键为“VB”的元素
            d.Remove("VB");
        }
<12>
发表评论0条 】
网友评论(共?条评论)..
C#中使用Dictionary实现Map数据结构