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
        }



    }
  • 相关阅读:
    antipirate AD
    猪头符号
    开发过程中经常出现的问题及解决方案
    CS0016: 未能写入输出文件C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\source code\00f88265\65f00fab\App_Web_w56x7oz6.dll拒绝访问
    ASPxComboBox控件联动效果bug改进
    工作中的点滴积累
    每日一句
    每日一句
    解决ora12154的问题
    如何查看eclipse版本?
  • 原文地址:https://www.cnblogs.com/BigTall/p/64197.html
Copyright © 2011-2022 走看看