学习 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的内置Hash
class.
的数据结构
哈希表使用键的哈希作为索引。因为可能的索引数量有限,所以会发生 collision(即不同的键具有相同的散列)。 Separate chaining 是一种常见的冲突解决方法。密钥被插入桶中。 num_buckets
这里是桶的数量。具有相同散列的不同键在同一个桶中。
说明来自 Wikipedia 的独立链接的图像:
有人可以简单地向我解释一下桶的概念吗?我知道 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的内置Hash
class.
哈希表使用键的哈希作为索引。因为可能的索引数量有限,所以会发生 collision(即不同的键具有相同的散列)。 Separate chaining 是一种常见的冲突解决方法。密钥被插入桶中。 num_buckets
这里是桶的数量。具有相同散列的不同键在同一个桶中。
说明来自 Wikipedia 的独立链接的图像: