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
        }



    }
  • 相关阅读:
    微信助力活动表结构设计
    mysql的in查询分析
    PHP从数组中找到指定元素的位置
    Java程序使用Alpine Linux报错java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy解决
    Eclipse/Idea 代码格式化部分忽略
    修改Linux桌面高分屏下QT程序界面的缩放
    折腾linux随笔 之 关闭Budgie默认自动隐藏应用的菜单栏 与 Gnome系桌面应用菜单无内容解决
    Debian Buster 使用Lxde在界面中打开url提示错误解决
    Portainer容器可视化管理工具使用文档
    Lxde添加触摸板双击功能、防误触
  • 原文地址:https://www.cnblogs.com/BigTall/p/64197.html
Copyright © 2011-2022 走看看