【发布时间】:2009-12-03 22:58:26
【问题描述】:
我需要创建一个包含所有城市和机场的 Java 缓存。所以,如果我在缓存中查询一个位置,比如说一个城市,它应该返回那个城市的所有机场,如果我查询一个机场的位置,我应该返回那个机场。 此外,每个位置都必须作为字节数组存储在缓存中。(因为用于查询缓存的公开接口具有 byte[] 作为位置参数) 其他注意事项是:
- 检索必须非常快,尽可能快
- 缓存只在系统启动时加载一次,获取后不改变 加载。
- 由于它只加载一次,如果这样可以加快检索速度,我们可以对其进行排序。
到目前为止我得到了什么:
方法 1
在 byte[] 数组上创建一个瘦包装器,比如说 ByteWrapper。将每个位置(机场和城市)作为地图(TreeMap?)中的键。使用 ByteWrapper 列表(包含适用的机场)作为值。
方法 2
创建按位置排序的多维 byte[] 数组。它本质上是一张地图。然后使用二分查找来定位key并返回结果。
你会建议什么方法?如果您有更好的想法,请告诉我 谢谢
【问题讨论】:
-
放纵我:你为什么用
byte[]s 代表城市和机场? -
:) 嗯。我们有另一个缓存,它使用 bytes[](编码的机场)作为有关机场的其他信息的键。这样做是为了节省空间和更快的访问。该缓存的问题在于它基于机场。我们现在想支持城市。但是,我们不想在该缓存中再创建一个级别(城市-> 机场-> 其他信息-> 更多信息),因为它已经有 3-4 个级别。因此,我们正在创建这个新的缓存,它将用于获取给定城市/机场的机场,并使用结果来查询现有的基于机场的缓存。嗯,我是不是含糊其辞? :)
-
嗯没有人回答?我正在研究解决方案。 tomm会让你知道结果。如果您有任何想法,请提出一些更好的想法。
标签: java arrays caching hashmap