public class UniqNumberGenerator<O> extends Object
ユニークNoは指定された初期値からスタートし、newNoメソッドが呼ばれる度にインクリメントされる。 ユニークNoは指定された整数の範囲 [from, to] の中で生成される。 順にインクリメントされ、toに達した次には、fromに戻って生成される。 尚、from, to は0以上の整数(int値)でないといけない。
UniqNoGeneratorオブジェクトは、内部にmapを持ち、discardされていないactiveな番号を保持している。 これにより、範囲 [from, to] の中をサイクリックにインクリメントする際にactive番号をスキップさせて、 必ずユニークな番号を生成できるようになっている。
UniqNoGeneratorオブジェクトは、ユニークNoを割り当てたいオブジェクトを管理するために用いることもできる。 newNo(obj)メソッドを使ってユニークNoを生成すると、指定されたオブジェクトは内部のmapに保持され、 getObject(no)メソッドを使って取り出すことが可能となる。
UniqNoGenerator実装はスレッドセーフである。
| コンストラクタと説明 |
|---|
UniqNumberGenerator(int init,
int from,
int to)
ユニークNoの初期値と生成範囲を指定して、UniqNoGeneratorオブジェクトを生成する。
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
void |
discardNo(int no)
指定されたユニークNoを再利用できるよう破棄する。
|
O |
getObject(int no)
指定されたユニークNoに割り当てられたオブジェクトを取得する。
|
boolean |
isActive(int no)
指定されたユニークNoがすでに生成されたものかどうかをチェックする。
|
int |
newNo()
ユニークNoを生成する。
|
int |
newNo(O obj)
ユニークNoを生成し、指定された オブジェクトをユニークNoを使って取得できるよう内部のmapに割り当てる。
|
String |
toString() |
public UniqNumberGenerator(int init,
int from,
int to)
throws IllegalArgumentException
init - ユニークNoの初期値from - ユニークNoを生成する範囲を指定する始点to - ユニークNoを生成する範囲を指定する終点IllegalArgumentException - initがfromからtoの範囲に収まっていない場合、fromまたはtoが負の数の場合public int newNo(O obj)
ユニークNoはinit値からスタートし、fromからtoで指定された範囲のint値が用いられる。 to-from+1個のユニークNoが払い出された場合は、エラーとして-1が返される。
obj - ユニークIDを割り付けるオブジェクトpublic int newNo()
ユニークNoはinit値からスタートし、fromからtoで指定された範囲のint値が用いられる。 to-from+1個のユニークNoが払い出された場合は、エラーとして-1が返される。
public O getObject(int no)
no - ユニークNopublic boolean isActive(int no)
no - ユニークNopublic void discardNo(int no)
no - 不要になったユニークNoCopyright © 2017. All rights reserved.