集合中的搜索/查询(Java)

时间:2009-10-15 12:10:06

标签: java collections geolocation key-value

我创建了许多Geodata对象(name,postalCode,lat,lon)。现在我想将它们放入一个集合中以便稍后搜索不同的条目。

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

这样的查询看起来像:

  • 按姓名或PLZ
  • 查找lat和lon
  • 在LAT1,LAT2和LON1,LON2
  • 之间查找对象

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

此类查询需要什么复杂性? 多线程可以带来好处吗?如果是,哪个集合最多用于线程安全?

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

1 个答案:

答案 0 :(得分:4)

您可以使用内存数据库

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


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

  1. Map,名称为
  2. Map,以plz为关键
  3. List<List<"object">> LAT为第一个列表,LON为第二个列表 两者都是排序的,因此对于每个都可以使用二进制搜索来搜索值,并使用subList有效地返回一个间隔。
  4. 这相当于键的重复,但不是所有对象的重复,因为您可以在所有这些情况下重用相同的实例对象。

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

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