4

Googleマップから緯度と経度のアドレスペアをキャッシュしようとしているので、キーが2つの整数(緯度と経度)であるデータ構造が必要です。そのための最も単純なデータ構造は何ですか?

これまでに2つの方法を考えました。

ネストされたハッシュ:

{37.734608 {-121.913019 "San Ramon, CA" -121.6 "Tracy, CA"}}

2つを連結して、キーを作成します。

{"37.734608,-121.913019" "San Ramon, CA" "37.734608,-121.6" "Tracy, CA"}}

他の解決策が欠けていますか?どれをお勧めしますか?

4

2 に答える 2

3

タグにあるようlispに、最も簡単で慣用的な方法は、関連付けリストを使用することです。

;; Sample in Scheme
>  (define lat/lon (list (cons '(3.44 5.44) 
                                '("blah" "3.44,5.44" "bloo")) 
                         (cons '(37.734608 -121.913019) 
                               '("San Ramon, CA" "37.734608,-121.6" "Tracy, CA"))))

> (assoc '(3.44 5.44) lat/lon)
=> ((3.44 5.44) "blah" "3.44,5.44" "bloo")

> (assoc '(37.734608 -121.913019) lat/lon)
=> ((37.734608 -121.913019) "San Ramon, CA" "37.734608,-121.6" "Tracy, CA")
于 2010-10-20T07:08:13.053 に答える
1

Zオーダーをチェックしてください。しかし、これを保存するために何を使用していますか?RDBMSの場合、なぜ2フィールドの主キーを使用できないのですか?

Zオーダーの利点は、それで並べ替えると、(物理的に)近いものが一般に(メモリ/ディスク上に)近くに保存されることです。

于 2010-10-20T02:31:56.670 に答える