0

有人可以简单地向我解释一下桶的概念吗?我知道 aDict是一个数组数组,但我终其一生都无法理解这第一段代码,也无法在网上找到任何解释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
4

1 回答 1

2

该代码旨在实现一种称为Hash table的数据结构。它是 Ruby 内置Hash类的数据结构。

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

一张图片说明了来自Wikipedia的单独链接:

在此处输入图像描述

于 2015-06-20T17:23:18.487 回答