一
Dictionary<int,string>
相当于两个不同的阵列,例如:
int[] keys =new int[] { 1, 2, 3 };
string[] values=new string[]{"val1","val2","val3"};
一
Dictionary<int,string>
相当于两个不同的阵列,例如:
int[] keys =new int[] { 1, 2, 3 };
string[] values=new string[]{"val1","val2","val3"};
这并非太大了。 查阅反射源代码时,似乎使用了三种内部收集资料:
private Entry<TKey, TValue>[] entries;
private KeyCollection<TKey, TValue> keys;
private ValueCollection<TKey, TValue> values;
请注意,还有一份<代码>int[] buckets 的变量,用于跟踪/buckets。
这些变量的目的都应该是公允的。 自<代码>以来,这并不令人特别惊讶。 Dictionary category is known and documentation to provide (ideally, with one items per bucket) O(1)
。
该书在:
Dictionary(Of TKey,TValue)通用班子从一套钥匙到一套价值进行测绘。 除字典外,每增加一个价值及其相关钥匙。 使用钥匙收回价值的速度非常快,接近O(1),因为Dictionary(Of TKey,TValue)级作为洗衣板实施。
这令人不安。 每个关键词典都计算其散射法,并将之作为点子,用于应居住的地方。 如果两种钥匙与同一散射法相匹配,则这种情形被称作碰撞,在内部用于这一特殊病例的假想树。
Dictionary (hashtable)的弹性复杂性是O(1),在最坏的情况下是O(log(N))(最糟糕的情况是,我们只处理碰撞),N是Dictionary的一些要素。
页: 1 但这并非完全是一片 has,而是真正密切相关。
http://en.wikipedia.org/wiki/Hash_table。
rel=“nofollow noreferer”> http://www.kirupa.com/net/dictionary_hashtable.htm。