English 中文(简体)
Dictionary如何在内部维持?
原标题:How the Dictionary is internally maintained?
  • 时间:2009-10-21 12:49:57
  •  标签:

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 (hashtable)的弹性复杂性是O(1),在最坏的情况下是O(log(N))(最糟糕的情况是,我们只处理碰撞),N是Dictionary的一些要素。





相关问题
热门标签