我创建了许多地理数据对象(名称、邮政编码、纬度、经度)。现在我想将它们放入一个集合中,以便稍后搜索不同的条目。
一切都应该发生在面向对象/内存中,因此不需要关系数据库。
这样的查询看起来像:
- 按名称或plz查找经度和经度
- 查找 LAT1,LAT2 和 LON1,LON2 之间的对象
对于这样一个“简单”的数据结构,什么集合是最好的?
这样的查询需要什么复杂性?多线程可以带来好处吗?如果是,哪个集合最好用于线程安全?
是否有机会在 key=>value 数据库中编写此类查询?
我创建了许多地理数据对象(名称、邮政编码、纬度、经度)。现在我想将它们放入一个集合中,以便稍后搜索不同的条目。
一切都应该发生在面向对象/内存中,因此不需要关系数据库。
这样的查询看起来像:
对于这样一个“简单”的数据结构,什么集合是最好的?
这样的查询需要什么复杂性?多线程可以带来好处吗?如果是,哪个集合最好用于线程安全?
是否有机会在 key=>value 数据库中编写此类查询?
您可以使用内存数据库。
这很好,因为关系数据库适用于这样的关系查询...... :-)
对于自制的纯 Java,您可以使用:
Map
, 以名称为键Map
, 以 plz 为键List<List<"object">>
第一个列表是 LAT,第二个列表是 LON。subList
.这相当于键的重复,但并非所有对象都重复,因为您可以在所有这些情况下重用相同的实例对象。
多线程是可以接受的(如果您出于其他原因需要它),但我怀疑您是否需要引入它来提高单个搜索的性能。提到的数据结构应该在不到一毫秒的时间内提供正确的答案!
这些数据结构的线程安全不是问题,因为您的用例似乎是只读的。如果在某些情况下需要修改“对象”,那么只能保护“对象”本身,而不是用于搜索的数据结构。