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
    }



}

posted on   老翅寒暑  阅读(3979)  评论(1编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

导航

< 2004年11月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11
点击右上角即可分享
微信分享提示