想要存储对象,允许通过数字键检索它们。这些键的范围从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}
答案 0 :(得分:4)
您基本上描述了稀疏数组或散列。
哈希很快,只使用他们必须使用的内存。它们也具有内存效率。没有“神奇”的数据结构可以更快。使用哈希。