Package org.apache.commons.math3.util
Class MultidimensionalCounter
java.lang.Object
org.apache.commons.math3.util.MultidimensionalCounter
Converter between unidimensional storage structure and multidimensional
conceptual structure.
This utility will convert from indices in a multidimensional structure
to the corresponding index in a one-dimensional array. For example,
assuming that the ranges (in 3 dimensions) of indices are 2, 4 and 3,
the following correspondences, between 3-tuples indices and unidimensional
indices, will hold:
- (0, 0, 0) corresponds to 0
- (0, 0, 1) corresponds to 1
- (0, 0, 2) corresponds to 2
- (0, 1, 0) corresponds to 3
- ...
- (1, 0, 0) corresponds to 12
- ...
- (1, 3, 2) corresponds to 23
- Since:
- 2.2
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassPerform iteration over the multidimensional counter. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintgetCount(int... c) Convert to unidimensional counter.int[]getCounts(int index) Convert to multidimensional counter.intGet the number of dimensions of the multidimensional counter.intgetSize()Get the total number of elements.int[]getSizes()Get the number of multidimensional counter slots in each dimension.iterator()Create an iterator over this counter.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
MultidimensionalCounter
Create a counter.- Parameters:
size- Counter sizes (number of slots in each dimension).- Throws:
NotStrictlyPositiveException- if one of the sizes is negative or zero.
-
-
Method Details
-
iterator
Create an iterator over this counter. -
getDimension
public int getDimension()Get the number of dimensions of the multidimensional counter.- Returns:
- the number of dimensions.
-
getCounts
Convert to multidimensional counter.- Parameters:
index- Index in unidimensional counter.- Returns:
- the multidimensional counts.
- Throws:
OutOfRangeException- ifindexis not between0and the value returned bygetSize()(excluded).
-
getCount
Convert to unidimensional counter.- Parameters:
c- Indices in multidimensional counter.- Returns:
- the index within the unidimensionl counter.
- Throws:
DimensionMismatchException- if the size ofcdoes not match the size of the array given in the constructor.OutOfRangeException- if a value ofcis not in the range of the corresponding dimension, as defined in theconstructor.
-
getSize
public int getSize()Get the total number of elements.- Returns:
- the total size of the unidimensional counter.
-
getSizes
public int[] getSizes()Get the number of multidimensional counter slots in each dimension.- Returns:
- the sizes of the multidimensional counter in each dimension.
-
toString
-