Package org.apache.commons.math4.util
Class IntegerSequence.Incrementor
java.lang.Object
org.apache.commons.math4.util.IntegerSequence.Incrementor
- All Implemented Interfaces:
java.util.Iterator<java.lang.Integer>
- Enclosing class:
- IntegerSequence
public static class IntegerSequence.Incrementor
extends java.lang.Object
implements java.util.Iterator<java.lang.Integer>
Utility that increments a counter until a maximum is reached, at
which point, the instance will by default throw a
MaxCountExceededException.
However, the user is able to override this behaviour by defining a
custom callback, in order to e.g.
select which exception must be thrown.-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceIntegerSequence.Incrementor.MaxCountExceededCallbackDefines a method to be called at counter exhaustion. -
Method Summary
Modifier and Type Method Description booleancanIncrement()Checks whether incrementing the counternTimesis allowed.booleancanIncrement(int nTimes)Checks whether incrementing the counter several times is allowed.static IntegerSequence.Incrementorcreate()Factory method that creates a default instance.intgetCount()Gets the current count.intgetMaximalCount()Gets the upper limit of the counter.booleanhasNext()voidincrement()Adds the increment value to the current iteration count.voidincrement(int nTimes)Performs multiple increments.java.lang.Integernext()voidremove()Not applicable.IntegerSequence.IncrementorwithCallback(IntegerSequence.Incrementor.MaxCountExceededCallback cb)Creates a new instance with a given callback.IntegerSequence.IncrementorwithIncrement(int step)Creates a new instance with a given increment.IntegerSequence.IncrementorwithMaximalCount(int max)Creates a new instance with a given maximal count.IntegerSequence.IncrementorwithStart(int start)Creates a new instance with a given initial value.
-
Method Details
-
create
Factory method that creates a default instance. The initial and maximal values are set to 0. For the new instance to be useful, the maximal count must be set by callingwithMaximalCount.- Returns:
- an new instance.
-
withStart
Creates a new instance with a given initial value. The counter is reset to the initial value.- Parameters:
start- Initial value of the counter.- Returns:
- a new instance.
-
withMaximalCount
Creates a new instance with a given maximal count. The counter is reset to the initial value.- Parameters:
max- Maximal count.- Returns:
- a new instance.
-
withIncrement
Creates a new instance with a given increment. The counter is reset to the initial value.- Parameters:
step- Increment.- Returns:
- a new instance.
-
withCallback
public IntegerSequence.Incrementor withCallback(IntegerSequence.Incrementor.MaxCountExceededCallback cb)Creates a new instance with a given callback. The counter is reset to the initial value.- Parameters:
cb- Callback to be called at counter exhaustion.- Returns:
- a new instance.
-
getMaximalCount
public int getMaximalCount()Gets the upper limit of the counter.- Returns:
- the counter upper limit.
-
getCount
public int getCount()Gets the current count.- Returns:
- the current count.
-
canIncrement
public boolean canIncrement()Checks whether incrementing the counternTimesis allowed.- Returns:
falseif callingincrement()will trigger aMaxCountExceededException,trueotherwise.
-
canIncrement
public boolean canIncrement(int nTimes)Checks whether incrementing the counter several times is allowed.- Parameters:
nTimes- Number of increments.- Returns:
falseif callingincrement(nTimes)would call thecallbacktrueotherwise.
-
increment
Performs multiple increments.- Parameters:
nTimes- Number of increments.- Throws:
MaxCountExceededException- at counter exhaustion.NotStrictlyPositiveException- ifnTimes <= 0.- See Also:
increment()
-
increment
Adds the increment value to the current iteration count. At counter exhaustion, this method will call thetriggermethod of the callback object passed to thewithCallback(MaxCountExceededCallback)method. If not explictly set, a default callback is used that will throw aMaxCountExceededException.- Throws:
MaxCountExceededException- at counter exhaustion, unless a customcallbackhas been set.- See Also:
increment(int)
-
hasNext
public boolean hasNext()- Specified by:
hasNextin interfacejava.util.Iterator<java.lang.Integer>
-
next
public java.lang.Integer next()- Specified by:
nextin interfacejava.util.Iterator<java.lang.Integer>
-
remove
public void remove()Not applicable.- Specified by:
removein interfacejava.util.Iterator<java.lang.Integer>- Throws:
MathUnsupportedOperationException- always
-