コレクションの検索/クエリ(Java)
-
21-09-2019 - |
質問
多くのジオダタオブジェクト(名前、郵便、ラット、LON)を作成しました。今、私はそれらをコレクションに入れて、後で異なるエントリを検索したいと思います。
すべてがObjectoriented/Inmemoryを発生させる必要があるため、リレーショナルデータベースの必要はありません。
そのようなクエリは次のように見えます:
- 名前またはplzでLATとLONを見つけてください
- LAT1、LAT2、LON1、LON2の間のオブジェクトを見つける
このような「シンプルな」データストラクチャに最適なコレクションは何ですか?
このようなクエリにはどのような複雑さが必要ですか?マルチスレッドは利益になることができますか?もしそうなら、どのコレクションが糸の安全にせいぜい使用されますか?
キー=>値データベースにそのようなクエリを書く機会はありますか?
解決
使用することができます インメモリデータベース.
リレーショナルデータベースはこのようなリレーショナルクエリに適しているため、これは良いことです。
自家製のために 純粋なジャワ, 、使用できます:
Map
, 、名前をキーとしてMap
, 、PLZをキーとしてList<List<"object">>
最初のリストのLATで、2番目のリストのLON。
どちらもソートされているため、それぞれについてバイナリ検索を使用して値を検索し、で間隔を効率的に返すことができますsubList
.
これは、キーの重複に相当しますが、これらすべてのケースで同じインスタンスオブジェクトを再利用できるため、すべてのオブジェクトではありません。
マルチスレッド 受け入れられます(他の理由で必要な場合)が、単一の検索のパフォーマンスを改善するために導入する必要があるとは思いません。記載されているデータ構造は、1ミリ秒未満で正しい答えを提供する必要があります!
スレッドセーフティ ユースケースは読み取り専用であるように見えるため、これらのデータ構造の問題ではありません。場合によっては「オブジェクト」を変更する必要がある場合は、検索に使用されるデータ構造ではなく、「オブジェクト」自体のみを保護できます。
所属していません StackOverflow