1

ロンドンの地理位置情報を指定して、最寄りの地下鉄駅とそれぞれの路線を見つける小さな Web アプリケーションを Java で開発しています。私は、メトロステーションとメトロラインの関係を表す最良の方法を見つけようとしています。ご存じのように、1 つの地下鉄駅が複数の路線に含まれることがあります。私が今やっているのは、データベースにテーブルがあり、関係がマトリックスとして表されていることです。このようなもの:

stationId | blueLine | blackLine | pinkLine | purpleLine | ... | greenLine
    25          0          1          1           0                  1     

これらの 0 と 1 は、駅がその地下鉄路線の一部であることを意味するブール値です (null 不可で、デフォルトは 0 です)。もちろん、このデータは頻繁に変更されることはありません (彼らは新しい駅や路線を頻繁に建設するわけではありません)。このデータが必要になるたびにデータベースを呼び出す (これは大量です) のは、やり過ぎだと思います。1つの解決策はそれをキャッシュすることかもしれませんが、これらの種類のデータを保存するためのJavaアプローチが私にとってより良いかどうかを考えていました.おそらく地下鉄オブジェクトの一定のリスト、すべての地下鉄駅データを内部に持つある種の静的クラス、Beanクラスを使用し、依存性注入を使用して注入します...

この機能を実装する最良の方法は何だと思いますか?

4

2 に答える 2

0

最終的に、サイモンが提案したものに似たものに行きました。私は持っている:

HashMap<MetroLine, List<MetroStation>> hmMetroLines;
EnumSet<MetroStation> esMetroStations;

MetroStation は、所属する路線のすべてのデータを含む Enum です。このようなもの:

public enum MetroStation{
METRO1(1, true, false, true, false, false, false, false, false, false, false, 
        false, false, false, false, false, false, "descirption1"),
METRO2(2, true, true, false, false, false, false, false, false, false, false,
        false, false, false, false, false, false, "description2"),...

private int id;
private boolean line1;
private boolean line2;
private boolean line3;
...
private boolean line14;
private String description;

Simon の提案に従って Singleton クラスを使用し、HashMap と Set を 1 回だけ作成します。

于 2013-04-05T15:37:42.520 に答える
0

すべてのオブジェクトをメモリに保持する必要がある場合は、必要なクエリの種類ごとに Map を作成します。

1

HashMap<Line, List<Station>>

そして一つ

HashMap <Station, List<Line>> 

例えば。このようにして、クエリはかなり高速になり、マップはオブジェクトのポインターを保存するため、それほど多くのスペースを占有しません。

最後に、「データ アクセス レイヤー」として機能するシングルトン クラスを作成し、必要なものを取得するためのクエリ メソッドの固定セットを提供できます。

于 2013-04-04T15:52:14.873 に答える