オブジェクトを保存して、数字キーを使用してオブジェクトを取得できるようにします。これらのキーの範囲は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}