だから次のレベルダウンの地図含む各レベルで、階層を構築:
class Store {
string name;
// other stuff
}
class Area {
string name;
Map<string, Store> stores;
// other stuff;
}
class City {
string name;
Map<string, Area> areas;
// other stuff
}
class State {
string name;
Map<string, City> cities;
// other stuff
}
class Country {
string name;
Map<string, State> states;
// other stuff
}
をそして、あなたは、クラススコープで国のMap
を持っている:
Map<string, Country> countries;
したい場合特定の国、州、市のすべての店舗については、まず都市への参照を取得する必要があります。
Country country = countries[countryName];
State state = country.states[stateName];
City city = state.cities[cityName];
今、都市のエリアごとに、あなたは、各店舗にアクセスしてください。
for (Map.Entry<String, Area> pair : city.areas.entrySet())
{
Area area = entry.getValue();
for (Map.Entry<String, Store> storePair : areas.stores.entrySet())
{
// Here, pair.getKey() is the store name
// and pair.getValue() is the Store object
}
}
これは本当に、ネストされた辞書を用いて実装だけ階層ツリーです。何もない。
このスキーマに最適なツールはおそらくデータベースのようなものです。あなたは1つを使用していない理由は何ですか? –
@TimBiegeleisenすべてのデータが1つのテーブルに格納されていますが、そのテーブルで一度クエリを実行し、キャッシュしてクエリを実行する必要があります。 –
私は、正しいインデックスを追加し、純粋にJavaでこれを処理します。 –