多Value Dictionary

使用方式

var m = new MultiDictionary<string, string>();

m.Add( "key", "v1" );
 m.Add( "key", "v2" );
 m.Add( "key", "v3" );
 m.Add( "key2", "v4", "v5" );

 m.Remove( "key2", "v5" );
 m.Remove( "key" );

 m.Clear();

 if ( m.Contains( "key2", "v4" ) )
 {
 }

 if ( m.ContainsKey( "key2" ) )
 {
 }

 foreach ( var pair in m )
 {
     foreach ( var n in pair.Value )
     {
         Debug.Log( pair.Key + ": " + n );
     }
 }

 foreach ( var key in m.Keys )
 {
     Debug.Log( key );
 }

 foreach ( var value in m.Values )
 {
     foreach ( var n in value )
     {
         Debug.Log( n );
     }
 }

 Debug.Log( m.Count );

核心dictionary

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 

namespace Martin {
    public class M_DictionaryMutiValue<TKey, TValue> {
        private readonly Dictionary<TKey, List<TValue>> mDictionary = new Dictionary<TKey, List<TValue>> ();

        /// <summary>
        /// 獲取或設(shè)置與指定鍵關(guān)聯(lián)的多個(gè)值
        /// </summary>
        public List<TValue> this [TKey key] {
            get { return mDictionary[key]; }
            set { mDictionary[key] = value; }
        }

        /// <summary>
        /// 獲取包含鍵的集合
        /// </summary>
        public Dictionary<TKey, List<TValue>>.KeyCollection Keys {
            get { return mDictionary.Keys; }
        }

        /// <summary>
        /// 獲取包含多個(gè)值的集合
        /// </summary>
        public Dictionary<TKey, List<TValue>>.ValueCollection Values {
            get { return mDictionary.Values; }
        }

        /// <summary>
        /// 獲取存儲(chǔ)的鍵/值對(duì)的數(shù)量
        /// </summary>
        public int Count {
            get { return mDictionary.Count; }
        }

        /// <summary>
        /// 將指定的鍵和值添加到字典中
        /// </summary>
        public void Add (TKey key, TValue value) {
            if (!mDictionary.ContainsKey (key)) {
                mDictionary.Add (key, new List<TValue> ());
            }
            mDictionary[key].Add (value);
        }

        /// <summary>
        /// 將指定的鍵和多個(gè)值添加到字典中
        /// </summary>
        public void Add (TKey key, params TValue[] values) {
            foreach (var n in values) {
                Add (key, n);
            }
        }

        /// <summary>
        /// 將指定的鍵和多個(gè)值添加到字典中
        /// </summary>
        public void Add (TKey key, IEnumerable<TValue> values) {
            foreach (var n in values) {
                Add (key, n);
            }
        }

        /// <summary>
        /// 使用指定的鍵刪除值
        /// </summary>
        public bool Remove (TKey key, TValue value) {
            return mDictionary[key].Remove (value);
        }

        /// <summary>
        /// 使用指定鍵刪除多個(gè)值
        /// </summary>
        public bool Remove (TKey key) {
            return mDictionary.Remove (key);
        }

        /// <summary>
        /// 刪除所有鍵和多個(gè)值
        /// </summary>
        public void Clear () {
            mDictionary.Clear ();
        }

        /// <summary>
        /// 確定是否存儲(chǔ)指定的鍵和值
        /// </summary>
        public bool Contains (TKey key, TValue value) {
            return mDictionary[key].Contains (value);
        }

        /// <summary>
        /// 確定是否存儲(chǔ)指定的鍵
        /// </summary>
        public bool ContainsKey (TKey key) {
            return mDictionary.ContainsKey (key);
        }

        /// <summary>
        /// 返回一個(gè)枚舉器來(lái)迭代
        /// </summary>
        public IEnumerator<KeyValuePair<TKey, List<TValue>>> GetEnumerator () {
            foreach (var n in mDictionary) {
                yield return n;
            }
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容