.Net数据结构:DictionaryBase DictionaryEntry Hashtable

DictionaryBase 类是用来创建用户字典的抽象类。 而字典则是利用散列表 (或者有时为单独
的链表)作为潜在的数据结构来把数据存储到键值对内的一种数据结构。键值对作 为
DictionaryEntry 对 象 来 进 行 存 储 , 而 且 必 须 使 用 Key 方 法 和 Value 方 法 来 取 回
DictionaryEntry 对象中的实际值。

       

    public class myDictionary : DictionaryBase
    {
        public myDictionary() { }

        public void Add(object key, object value)
        {
            base.InnerHashtable.Add(key, value);
        }

        public void Remove(object key)
        {
            base.InnerHashtable.Remove(key);
        }

        public object Get(object key)
        {
            return base.InnerHashtable[key];
        }

        public void Clear()
        {
            base.InnerHashtable.Clear();
        }
        public int Count()
        {
            return base.InnerHashtable.Count;
        }
        public void Insert(object key, object value)
        {
            if (base.InnerHashtable.Contains(key))
            {
                base.InnerHashtable.Remove(key);
            }
            base.InnerHashtable.Add(key,value);
        }

        public DictionaryEntry[] Entrys()
        {
            DictionaryEntry[] de = new DictionaryEntry[base.InnerHashtable.Count-1];
            base.InnerHashtable.CopyTo(de, 0);
            return de;
        }
    }

DictionaryBase 类是一种用作专有字典实现基础的抽象(MusInherit)类。

存储在字典中的键值对实际上是作为 DictionaryEntry 对象来存储的。DictionaryEntry 结构
提供了两个域,一个用于关键字而另一个用于值。在这个结构中所要关注的只是 Key 属性
和 Value 属性这两个属性(或方法) 。当把键值对录入到字典内的时候,这些方法会返回存
储的值。

就内部而言,会把键值对存储在被称为 InnerHashTable 的散列表对象中。

.NET 框架库提供了一种非常有用的处理散列表的类, 即 Hashtable 类.

Hashtable 类是 Dictionary 对象的一种特殊类型,它存储了键值对,其中的数值都是在源于
关键字的散列代码的基础上进行存储的。

    public class myHashTable
    {
        Hashtable ht = new Hashtable();

        public myHashTable(){ }

        public void Add(object key, object value)
        {
            ht.Add(key, value);
        }

        public void Remove(object key)
        {
            if(ht.ContainsKey(key))
            {
                ht.Remove(key);
            }
            
        }

        public object Get(object key)
        {
            return ht[key];
        }

        public void Clear()
        {
            ht.Clear();
        }
        public int Count()
        {
            return ht.Count;
        }
        public void Insert(object key, object value)
        {
            if (ht.Contains(key))
            {
                ht.Remove(key);
            }
            ht.Add(key, value);
        }
    }

Hashtable 类有两个非常有用的方法用来从散列表中取回关键字和数值: 即 Keys 和 Values 。
这些方法创建了一个 Enumerator 对象,它允许使用 For Each 循环或者其他一些技术来检
查关键字和数值。

原文地址:https://www.cnblogs.com/Francis-YZR/p/5050681.html