zoukankan      html  css  js  c++  java
  • Map,一个存放可重复key的无序列表


    代码已经经过初步测试,未来会有更多的类方上来,包括

    Hashtable 存放非重复key的无序列表(.net标准类库,不需要重写)

    HashArray 存放非重复key的有序列表

    Bag 存放重复key的有序列表

    Map 存放重复key的无序列表

    ////////
    using System;
    using System.Collections;

    namespace deltav.Collections
    {

        
    /// <summary>可以有键值重复的无序列表</summary>
        public class Map : IDictionary, IDisposable
        
    {
            
    Internal Data

            
    Constructors

            
    Internal Functions 

            
    /// <summary>
            
    /// 计算key对应的对象个数
            
    /// </summary>
            
    /// <param name="key">key</param>
            
    /// <returns>对象个数</returns>

            public int CountKey(object key)
            
    {
                
    if (this.m_InternalData.ContainsKey(key))
                    
    return ((ArrayList)this.m_InternalData[key]).Count;
                
    else
                    
    return 0;
            }


            
    public void RemoveAt(object key, int index)
            
    {
                
    if (m_InternalData.ContainsKey(key))
                
    {
                    MakeKeyExist(key).RemoveAt(index);
                    
    --m_Count;
                    
    ++m_Version;
                }

                
    else
                    
    throw new ArgumentOutOfRangeException("index");
            }


            
    public object this[object key, int index]
            
    {
                
    get
                
    {
                    
    if (this.m_InternalData.ContainsKey(key))
                    
    {
                        
    return MakeKeyExist(key)[index];
                    }

                    
    else
                        
    throw new ArgumentOutOfRangeException("index");
                }

                
    set
                
    {
                    MakeKeyExist(key)[index] 
    = value;
                }

            }


            IEnumerator GetEnumerator(
    object key)
            
    {
                
    if (this.m_InternalData.ContainsKey(key))
                    
    return MakeKeyExist(key).GetEnumerator();
                
    else
                    
    return null;
            }


            
    Internal Enumerator

            
    IDictionary Members

            
    ICollection Members

            
    IEnumerable Members

            
    IDisposable Members
        }



    }
  • 相关阅读:
    心得体悟帖---200130(专业长才(敲门砖))(希望)
    心得体悟帖---200130(一举多的)(少了发自内心的从容)
    范仁义css3课程---19、流动布局
    范仁义css3课程---18、overflow
    日常英语---200130(inspire)
    日常英语---200130(Basketball fans around the world are mourning the death of American superstar Kobe Bryant.)
    视频中的ts文件是什么
    如何美化windows桌面
    心得体悟帖---200127(囚笼-它会推着我的,不必多想)(过好当下,享受当下)
    心得体悟帖---有哪些越早知道越好的人生经验?(转自知乎)
  • 原文地址:https://www.cnblogs.com/BigTall/p/64197.html
Copyright © 2011-2022 走看看