Package org.apache.commons.math3.util
Class IntegerSequence.Incrementor
java.lang.Object
org.apache.commons.math3.util.IntegerSequence.Incrementor
- Enclosing class:
IntegerSequence
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 ClassesModifier and TypeClassDescriptionstatic interface
Defines a method to be called at counter exhaustion. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final IntegerSequence.Incrementor.MaxCountExceededCallback
Default callback.private int
Current count.private final int
Increment.private final int
Initial value the counter.private final IntegerSequence.Incrementor.MaxCountExceededCallback
Function called at counter exhaustion.private final int
Upper limit for the counter. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
Incrementor
(int start, int max, int step, IntegerSequence.Incrementor.MaxCountExceededCallback cb) Creates an incrementor. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Checks whether incrementing the counternTimes
is allowed.boolean
canIncrement
(int nTimes) Checks whether incrementing the counter several times is allowed.static IntegerSequence.Incrementor
create()
Factory method that creates a default instance.int
getCount()
Gets the current count.int
Gets the upper limit of the counter.boolean
hasNext()
void
Adds the increment value to the current iteration count.void
increment
(int nTimes) Performs multiple increments.next()
void
remove()
Not applicable.Creates a new instance with a given callback.withIncrement
(int step) Creates a new instance with a given increment.withMaximalCount
(int max) Creates a new instance with a given maximal count.withStart
(int start) Creates a new instance with a given initial value.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
CALLBACK
Default callback. -
init
private final int initInitial value the counter. -
maximalCount
private final int maximalCountUpper limit for the counter. -
increment
private final int incrementIncrement. -
maxCountCallback
Function called at counter exhaustion. -
count
private int countCurrent count.
-
-
Constructor Details
-
Incrementor
private Incrementor(int start, int max, int step, IntegerSequence.Incrementor.MaxCountExceededCallback cb) throws NullArgumentException Creates an incrementor. The counter will be exhausted either whenmax
is reached or whennTimes
increments have been performed.- Parameters:
start
- Initial value.max
- Maximal count.step
- Increment.cb
- Function to be called when the maximal count has been reached.- Throws:
NullArgumentException
- ifcb
isnull
.
-
-
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 counternTimes
is allowed.- Returns:
false
if callingincrement()
will trigger aMaxCountExceededException
,true
otherwise.
-
canIncrement
public boolean canIncrement(int nTimes) Checks whether incrementing the counter several times is allowed.- Parameters:
nTimes
- Number of increments.- Returns:
false
if callingincrement(nTimes)
would call thecallback
true
otherwise.
-
increment
Performs multiple increments.- Parameters:
nTimes
- Number of increments.- Throws:
MaxCountExceededException
- at counter exhaustion.NotStrictlyPositiveException
- ifnTimes <= 0
.- See Also:
-
increment
Adds the increment value to the current iteration count. At counter exhaustion, this method will call thetrigger
method of the callback object passed to thewithCallback(MaxCountExceededCallback)
method. If not explicitly set, a default callback is used that will throw aMaxCountExceededException
.- Throws:
MaxCountExceededException
- at counter exhaustion, unless a customcallback
has been set.- See Also:
-
hasNext
public boolean hasNext() -
next
-
remove
public void remove()Not applicable.- Specified by:
remove
in interfaceIterator<Integer>
- Throws:
MathUnsupportedOperationException
-