4

我正在尝试从谷歌地图缓存纬度/经度地址对,所以我需要一个数据结构,其中键是两个整数(纬度和经度)。最简单的数据结构是什么?

到目前为止,我想到了两种方法:

嵌套哈希:

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

将两者结合起来制作密钥:

{"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-order但你用什么来存储这个?如果它是一个 RDBMS,为什么你不能有一个 2 字段主键?

Z-order 的好处是,如果你按它排序,那么(物理上)接近的东西通常会被紧密地存储在一起(在内存/磁盘上)

于 2010-10-20T02:31:56.670 回答