学习 Ruby 困难的方法 Ex39 - 理解桶

Learn Ruby The Hard Way Ex39 - Understanding Buckets

有人可以简单地向我解释一下桶的概念吗?我知道 Dict 是一个数组数组,但我终其一生都无法理解这第一段代码,也无法在网上找到任何解释 num_buckets 的内容。如果能逐行解释就好了。

module Dict
  def Dict.new(num_buckets=256)
  # Initializes a Dict with the given number of buckets.
  aDict = []
  (0...num_buckets).each do |i|
    aDict.push([])
  end

  return aDict
end

该代码旨在实现一个名为 Hash table 的数据结构。是Ruby的内置Hashclass.

的数据结构

哈希表使用键的哈希作为索引。因为可能的索引数量有限,所以会发生 collision(即不同的键具有相同的散列)。 Separate chaining 是一种常见的冲突解决方法。密钥被插入桶中。 num_buckets 这里是桶的数量。具有相同散列的不同键在同一个桶中。

说明来自 Wikipedia 的独立链接的图像: