2009年07月13日

【1日1Commons】Rangeに含まれる数値チェック

org.apache.commons.lang.IntRange等


// JRE 1.6.0_07
// Commons Lang 2.4
// org.apache.commons.lang.IntRange
// org.apache.commons.lang.FloatRange
// org.apache.commons.lang.DoubleRange
// 数値が指定したRangeに含まれているか判定する
// tag Object
        
boolean bool;

// IntRangeは指定された範囲に入っているかを判定する
// 用途としては、閾値チェックなどが挙げられる
// 「価格チェック用閾値」としてインスタンスを用意しておき、
// 必ずそのインスタンスを使って処理を行わせるなどの利用法も考えられる

IntRange iRange = new IntRange( 10, 20 );

// 指定値よりも小さい場合はfalse
bool = iRange.containsInteger( 5 );
System.out.println( bool );
  // => false

// 指定値に含まれる場合(同値も含む)はtrue
bool = iRange.containsInteger( 10 );
System.out.println( bool );
  // => true

// 指定値よりも大きい場合はfalse
bool = iRange.containsInteger( 21 );
System.out.println( bool );
  // => false

// floatやdoubleも判定できる
bool = iRange.containsFloat( 10.5 );
System.out.println( bool );
  // => true
bool = iRange.containsDouble( 20.0d );
System.out.println( bool );
  // => true

// FloatRangeやDoubleRange、LongRangeもある
FloatRange fRange = new FloatRange( 1.5, 1.8 );
DoubleRange dRange = new DoubleRange( 12.5d, 12.8d );
LongRange lRange = new LongRange( -1l, 1l );

// 使い方はIntRangeと全く同じ

// Range同士で比較も可能
// iRange(10, 20) は dRange(12.5, 12.8)を含むのでtrue
bool = iRange.containsRange( dRange );
System.out.println( bool );
  // => true

// containsRange で trueになるのは含まれる場合のみ
// 下記のようなiRange(10, 20) と new IntRange(8, 12)のように
// 一部Rangeが被っているだけの場合はfalseになる
bool = iRange.containsRange( new IntRange(8, 12) );
System.out.println( bool );
  // => false

// JavaDoc
// http://commons.apache.org/lang/api-release/org/apache/commons/lang/math/IntRange.html