尽管我已阅读并理解,但Dictionary在内部使用散列来将密钥散列到某个内存位置(称为存储桶),并将值存储在那里的LinkedList中。如果某个其他密钥被散列到同一位置,则可能会将其附加到该链接列表。
我很确定有足够的存储桶可以使字典中的插入和删除速度足够快,但除此之外还有一些内务处理。每次将键添加到字典时,Dictionary.Keys和Dictionary.Values属性也会更新。我想了解其复杂性。
foreach循环如何枚举字典中的所有键或值。我尝试谷歌的答案,但没有真正达成一个具体的答案。我的研究归结为回答这个问题 - " Microsoft如何实现KeyCollection类甚至ValueCollection类?"
它可能正在使用List(本质上是一个数组)或下面的LinkedList。但是,从字典中删除密钥会导致低效的内务管理,不是吗?
HashSet也有类似的情况。基于一些哈希码以随机方式插入元素。当没有订单或没有从一个元素到另一个元素的链接时,foreach如何枚举每个元素?
有人可以给我一个见解吗?