Ruby中一种高效的数字键控数据结构

时间:2012-11-28 23:46:20

标签: ruby

想要存储对象,允许通过数字键检索它们。这些键的范围从0到任意大小(例如,~100K),但并非范围内的每个自然数都有相应的对象。

可能有以下内容:

structure[0] => some_obj_a
structure[3] => some_obj_b
structure[7] => some_obj_c
...
structure[100103] => some_obj_z

但是所有其他键(1,2,4,5,6,...)都没有关联的对象。数字键用于检索,以便提供“ID”以返回与该ID相关联的对象:

ID = get_input_id
my_obj = structure[ID]

Ruby中这种场景最有效的数据结构是什么?出于什么原因? (到目前为止,我可以看到它是一个哈希或一个数组。)

我用以下方式定义“有效”:

  • 使用的内存最少
  • 最快的查询时间
  • 最快的条目创建/更新(在任意键处)

此结构的初始化可能是

hsh = Hash.new # or Array.new
hsh[0] = {:id => 0, :var => "a", :count => 45}
hsh[3] = {:id => 3, :var => "k", :count => 32}
hsh[7] = {:id => 7, :var => "e", :count => 2}

1 个答案:

答案 0 :(得分:4)

您基本上描述了稀疏数组或散列。

哈希很快,只使用他们必须使用的内存。它们也具有内存效率。没有“神奇”的数据结构可以更快。使用哈希。