发布于 2016-10-06 07:26:27
字典的工作方式与列表不完全一样。如果您检查微软提供的源代码。您可以找到多个可能有用的私有字段。
请注意,这是一个封装的实现细节,您不应该在您的生产代码中依赖它,因为名称、私有成员和内部成员的行为可能会在没有事先通知的情况下更改!
您有内部数组int[] buckets和Entry[] entries。您还拥有int freeList和int freeCount。你可以利用反射来玩这些游戏。
为了回答您的问题,是在每个插入上触发一个重新分配,下面是实际代码:
int index;
if (freeCount > 0)
{
index = freeList;
freeList = entries[index].next;
freeCount--;
}
else
{
if (count == entries.Length)
{
Resize();
targetBucket = hashCode % buckets.Length;
}
index = count;
count++;
}https://stackoverflow.com/questions/39889575
复制相似问题