パッケージ org.piax.util

クラス UniqNumberGenerator<O>

java.lang.Object
org.piax.util.UniqNumberGenerator<O>

public class UniqNumberGenerator<O>
extends Object
ユニーク性を保証したint値、ユニークNoを生成するためのクラス。

ユニーク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()  

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • UniqNumberGenerator

      public UniqNumberGenerator​(int init, int from, int to) throws IllegalArgumentException
      ユニークNoの初期値と生成範囲を指定して、UniqNoGeneratorオブジェクトを生成する。 初期値(init)がfromからtoの範囲に収まっていない場合、fromまたはtoが負の数の場合は、 IllegalArgumentExceptionがthrowされる。
      パラメータ:
      init - ユニークNoの初期値
      from - ユニークNoを生成する範囲を指定する始点
      to - ユニークNoを生成する範囲を指定する終点
      例外:
      IllegalArgumentException - initがfromからtoの範囲に収まっていない場合、fromまたはtoが負の数の場合
  • メソッドの詳細

    • newNo

      public int newNo​(O obj)
      ユニークNoを生成し、指定された オブジェクトをユニークNoを使って取得できるよう内部のmapに割り当てる。

      ユニークNoはinit値からスタートし、fromからtoで指定された範囲のint値が用いられる。 to-from+1個のユニークNoが払い出された場合は、エラーとして-1が返される。

      パラメータ:
      obj - ユニークIDを割り付けるオブジェクト
      戻り値:
      ユニークNo, エラーの場合-1
    • newNo

      public int newNo()
      ユニークNoを生成する。

      ユニークNoはinit値からスタートし、fromからtoで指定された範囲のint値が用いられる。 to-from+1個のユニークNoが払い出された場合は、エラーとして-1が返される。

      戻り値:
      ユニークNo, エラーの場合-1
    • getObject

      public O getObject​(int no)
      指定されたユニークNoに割り当てられたオブジェクトを取得する。 newNo(obj) を使ってユニークNoを生成した場合にのみ、このメソッドは有効に機能する。 newNo(obj) を使わなかった場合、もしくは、discardNoによって、消去された場合はnullが返る。
      パラメータ:
      no - ユニークNo
      戻り値:
      割り付けられたオブジェクト、存在しない場合はnull
    • isActive

      public boolean isActive​(int no)
      指定されたユニークNoがすでに生成されたものかどうかをチェックする。 すでに生成されてactiveな状態である場合はtrueが返る。
      パラメータ:
      no - ユニークNo
      戻り値:
      ユニークNoがactiveな状態の場合、true
    • discardNo

      public void discardNo​(int no)
      指定されたユニークNoを再利用できるよう破棄する。
      パラメータ:
      no - 不要になったユニークNo
    • toString

      public String toString()
      オーバーライド:
      toString クラス内 Object