我创建了许多地理数据对象(名称、邮政编码、纬度、经度)。现在我想将它们放入一个集合中,以便以后搜索不同的条目。

一切都应该发生在面向对象/内存中,因此不需要关系数据库。

这样的查询看起来像:

  • 按名称查找纬度和经度,或者请查
  • 查找 LAT1、LAT2 和 LON1、LON2 之间的对象

对于这样一个“简单”的数据结构来说,哪一个集合是最好的呢?

这样的查询需要什么复杂度?多线程可以带来好处吗?如果是,哪个集合最适合线程安全?

是否有机会在 key=>value 数据库中编写此类查询?

有帮助吗?

解决方案

你可以使用 内存数据库.

这很好,因为关系数据库适合像这样的关系查询......:-)


对于自制 纯Java, ,你可以使用:

  1. Map, ,以名称为键
  2. Map, ,以 plz 作为键
  3. List<List<"object">> LAT 表示第一个列表,LON 表示第二个列表。
    两者都是排序的,因此对于每个您都可以使用二分搜索来搜索值,并有效地返回一个区间 subList.

这相当于键的重复,但不是所有对象的重复,因为您可以在所有这些情况下重用相同的实例对象。

多线程 是可以接受的(如果您出于其他原因需要它),但我怀疑您需要引入它来提高单个搜索的性能。提到的数据结构应该在不到一毫秒的时间内给出正确的答案!

线程安全 对于这些数据结构来说不是问题,因为您的用例似乎是只读的。如果在某些情况下需要修改“对象”,那么您只能保护“对象”本身,而不能保护用于搜索的数据结构。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top