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
        }



    }
  • 相关阅读:
    配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler” 解决办法
    js 获取cookie
    jQuery+Ajax+PHP 制作简单的异步数据传输(测试用户名是否可用)
    既之前的基础,先写个简单的PHP 与数据库 的数据交流
    Web 后端--PHP 与数据库的交互
    MySQL 忘记密码怎么办?
    MySQL 继续-- Win7 安装及后续工作
    数据库初识--从MySQL 出发
    在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法
    电脑使用--快捷键等
  • 原文地址:https://www.cnblogs.com/BigTall/p/64197.html
Copyright © 2011-2022 走看看