|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--jp.ne.ytp.util.tree.MultiKeyTree
複数のキーを持つことが可能な二分探索木のクラスです。
当クラスを利用する場合、TreeActionListener
インタフェースを実装したクラスが必要になります。
このクラスが管理するのは各階層のキーを持つノードと、
TreeActionListenerに対する呼び出しのタイミングだけです。
各ノードが管理するデータオブジェクトとそれに対する処理
(例えば、金額の集計やファイルソート、あるいは画面表示や帳票出力など)は、
TreeActionListenerを実装したクラスで行って下さい。
当クラスではそのような処理は一切提供しませんが、
この形態により、機能と実装の分離が可能となっています。
特にキーのマッチングに使う場合、
キーが一致した時の処理をTreeActionListener.match(int, Object)
メソッドに記述し、
データを出力する処理をTreeActionListener.sort(Object[], int, Object)
メソッドに記述すると、
効率よく実装することが可能になります。
マッチング処理の場合、TreeActionListener.makeHeader(Object, int, Object)
と
TreeActionListener.makeFooter(Object, int, Object)
の実装は不要です。
1階層分の情報を取得するkeys(Object[])
やvalues(Object[])
メソッドを利用する場合には、
OneLayerListener
インタフェースを実装したクラスが必要になります。
【作者注】当クラスの実装は単純な二分探索木であるため、
ソート済みのデータが登録された場合は極端な性能劣化が起きます。
近い将来、赤黒木などの平衡木に実装を置換する予定です。
OneLayerListener
,
OneLayerListener
フィールドの概要 | |
static boolean |
ASC
昇順ソートを指定する際に使用します。 |
static boolean |
DESC
降順ソートを指定する際に使用します。 |
コンストラクタの概要 | |
protected |
MultiKeyTree()
デフォルトコンストラクタは使用しないで下さい。 |
|
MultiKeyTree(int iLayer)
iLayerで指定された階層のキーを持つMultiKeyTreeクラスインスタンスを生成します。 |
|
MultiKeyTree(int iLayer,
boolean[] orders)
iLayerで指定された階層のキーと、 ordersで指定されたソート順を持つMultiKeyTreeクラスインスタンスを生成します。 |
メソッドの概要 | |
void |
addListener(TreeActionListener listener)
このクラスからイベントを通知するアクションリスナーを登録します。 |
void |
addOneLayerListener(OneLayerListener listener)
1階層走査においてこのクラスからイベントを通知するアクションリスナーを登録します。 |
Object |
get(Object[] keys)
keysで指定されたキーに対応する値を返します。 |
Iterator |
keys(Object[] keys)
keysで指定されたノード配下の1階層分のキーを昇順にソートし、 その結果をイテレータとして返します。 |
Iterator |
keys(Object[] keys,
boolean order)
keysで指定されたノード配下の1階層分のキーをorderで指定された順にソートし、 その結果をイテレータとして返します。 |
void |
put(Object[] keys)
キーを木に登録します。 |
void |
setComparators(Comparator[] comparators)
全階層分のコンパレータを設定します。 |
void |
traverse()
ルートノードを含む全ノードを走査します。 |
void |
traverse(Object[] keys)
指定されたキーを持つノード配下を走査します。 |
void |
traverse(Object[] keys,
int iLayer)
指定されたキーと階層のノード配下を走査します。 |
void |
traverseOneLayer(Object[] keys)
keysで指定されたノード配下の1階層だけを昇順で走査します。 |
void |
traverseOneLayer(Object[] keys,
boolean order)
keysで指定されたノード配下の1階層だけをorderで指定されたソート順で走査します。 |
Iterator |
values(Object[] keys)
keysで指定されたノード配下の1階層分のキーを昇順にソートし、 そのキーに対応するデータの並びをイテレータとして返します。 |
Iterator |
values(Object[] keys,
boolean order)
keysで指定されたノード配下の1階層分のキーをorderで指定された順にソートし、 そのキーに対応するデータの並びをイテレータとして返します。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public static final boolean ASC
public static final boolean DESC
コンストラクタの詳細 |
protected MultiKeyTree()
public MultiKeyTree(int iLayer)
iLayer
- ソートキーの最大レベルpublic MultiKeyTree(int iLayer, boolean[] orders)
iLayer
- 木の階層数orders
- 各レベルのソート順 昇順:ASC
降順:DESC
メソッドの詳細 |
public void addListener(TreeActionListener listener)
TreeActionListener.initializeRoot()
メソッドが呼び出されます。
listener
- アクションリスナーpublic void addOneLayerListener(OneLayerListener listener)
listener
- アクションリスナーpublic void setComparators(Comparator[] comparators)
comparators
- 全階層分のコンパレータDefaultComparator
public void put(Object[] keys)
TreeActionListener.create(int)
または
TreeActionListener.match(int, Object)
が呼び出されます。
keys
- キーの配列public Object get(Object[] keys)
keys
- キーの配列
public void traverse()
TreeActionListener.makeHeader(Object, int, Object)
TreeActionListener.sort(Object[], int, Object)
TreeActionListener.makeFooter(Object, int, Object)
を随時呼び出しイベントを通知します。
public void traverse(Object[] keys)
TreeActionListener.makeHeader(Object, int, Object)
・
TreeActionListener.sort(Object[], int, Object)
・
TreeActionListener.makeFooter(Object, int, Object)
を随時呼び出しイベントを通知します。
keys
- キーの配列
NoSuchElementException
- 指定されたキーが見つからなかった場合public void traverse(Object[] keys, int iLayer)
TreeActionListener.makeHeader(Object, int, Object)
・
TreeActionListener.sort(Object[], int, Object)
・
TreeActionListener.makeFooter(Object, int, Object)
を随時呼び出しイベントを通知します。
keys
- キーの配列iLayer
- 走査対象キーの階層数
NoSuchElementException
- 指定されたキーが見つからなかった場合public void traverseOneLayer(Object[] keys)
OneLayerListener.sortOneLayer(Object, Object)
メソッドが呼び出されます。
keys
- キーの配列
NoSuchElementException
- 指定したキーを持つノードが見つからなかった場合public void traverseOneLayer(Object[] keys, boolean order)
OneLayerListener.sortOneLayer(Object, Object)
メソッドが呼び出されます。
keys
- キーの配列order
- ソート順
NoSuchElementException
- 指定したキーを持つノードが見つからなかった場合public Iterator keys(Object[] keys)
OneLayerListener
インタフェースを実装する必要があります。
返すイテレータは木と同期されないので、イテレータ走査中に木が更新されても、
その結果はイテレータには反映されません。
keys
- キーの配列
public Iterator keys(Object[] keys, boolean order)
OneLayerListener
インタフェースを実装する必要があります。
返すイテレータは木と同期されないので、イテレータ走査中に木が更新されても、
その結果はイテレータには反映されません。
keys
- キーの配列
public Iterator values(Object[] keys)
OneLayerListener
インタフェースを実装する必要があります。
返すイテレータは木と同期されないので、イテレータ走査中に木が更新されても、
その結果はイテレータには反映されません。
keys
- キーの配列
public Iterator values(Object[] keys, boolean order)
OneLayerListener
インタフェースを実装する必要があります。
返すイテレータは木と同期されないので、イテレータ走査中に木が更新されても、
その結果はイテレータには反映されません。
keys
- キーの配列
|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |