質問

多くのジオダタオブジェクト(名前、郵便、ラット、LON)を作成しました。今、私はそれらをコレクションに入れて、後で異なるエントリを検索したいと思います。

すべてがObjectoriented/Inmemoryを発生させる必要があるため、リレーショナルデータベースの必要はありません。

そのようなクエリは次のように見えます:

  • 名前またはplzでLATとLONを見つけてください
  • LAT1、LAT2、LON1、LON2の間のオブジェクトを見つける

このような「シンプルな」データストラクチャに最適なコレクションは何ですか?

このようなクエリにはどのような複雑さが必要ですか?マルチスレッドは利益になることができますか?もしそうなら、どのコレクションが糸の安全にせいぜい使用されますか?

キー=>値データベースにそのようなクエリを書く機会はありますか?

役に立ちましたか?

解決

使用することができます インメモリデータベース.

リレーショナルデータベースはこのようなリレーショナルクエリに適しているため、これは良いことです。


自家製のために 純粋なジャワ, 、使用できます:

  1. Map, 、名前をキーとして
  2. Map, 、PLZをキーとして
  3. List<List<"object">> 最初のリストのLATで、2番目のリストのLON。
    どちらもソートされているため、それぞれについてバイナリ検索を使用して値を検索し、で間隔を効率的に返すことができます subList.

これは、キーの重複に相当しますが、これらすべてのケースで同じインスタンスオブジェクトを再利用できるため、すべてのオブジェクトではありません。

マルチスレッド 受け入れられます(他の理由で必要な場合)が、単一の検索のパフォーマンスを改善するために導入する必要があるとは思いません。記載されているデータ構造は、1ミリ秒未満で正しい答えを提供する必要があります!

スレッドセーフティ ユースケースは読み取り専用であるように見えるため、これらのデータ構造の問題ではありません。場合によっては「オブジェクト」を変更する必要がある場合は、検索に使用されるデータ構造ではなく、「オブジェクト」自体のみを保護できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top