郵政住所データを登録してみる。
前に戻る
郵政住所データを用いて、住所オブジェクトを登録してみる。
データの冗長さを省かないとオブジェクトデータベースとしての意味がないし、
性能が良くないはずなので、早速ではあるが、Compositeなデータ構造で格納する。
日本
佐賀県
西松浦郡
有田町
中樽
8440002
武雄市
武雄町
....
佐賀市
....
....
....
福岡県
福岡市
....
....
長崎県
佐世保市
....
....
長崎市
....
とりあえず、ここでは階層構造の一番奥深いところに、郵便番号オブジェクトがくることになる。
ROOTオブジェクトは「日本」。
class KsAddress extends KsName { ...snip... }
class KsAddressZip extends KsAddress { ...snip... }
KsAddress wAddress00 = new KsAddress("日本");
KsAddress wAddress01 = new KsAddress("佐賀県");
KsAddress wAddress02 = new KsAddress("西松浦郡");
KsAddress wAddress03 = new KsAddress("有田町");
KsAddress wAddress04 = new KsAddress("中樽");
KsAddressZip wAddress05 = new KsAddressZip("8440002");
wAddress00.add_child(wAddress01);
wAddress01.add_child(wAddress02);
wAddress02.add_child(wAddress03);
wAddress03.add_child(wAddress04);
wAddress04.add_child(wAddress05);
wZip=KsAddressZip.find("8440022"); //→8440022
wAddress=wZip.getParent(); //→中樽
wAddress=wZip.getParent().getParent(); //→有田町
wAddress=wZip.getParent().getParent().getParent(); //→西松浦郡
wAddress=wZip.getParent().getParent().getParent().getParent(); //→佐賀県
wAddress=wZip.getParent().getParent().getParent().getParent().getParent(); //→日本
郵便番号「8440002」の検索後は、ポインタをたどれば定数時間で目的地までたどりつける。
データも冗長性がない。
階層構造にすることで、読み仮名の追加や、海外住所にも対応可能かな。
前に戻る