Package org.apache.commons.math4.util
Class MultidimensionalCounter
java.lang.Object
org.apache.commons.math4.util.MultidimensionalCounter
- All Implemented Interfaces:
java.lang.Iterable<java.lang.Integer>
public class MultidimensionalCounter
extends java.lang.Object
implements java.lang.Iterable<java.lang.Integer>
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 Classes Modifier and Type Class Description classMultidimensionalCounter.IteratorPerform iteration over the multidimensional counter. -
Constructor Summary
Constructors Constructor Description MultidimensionalCounter(int... size)Create a counter. -
Method Summary
Modifier and Type Method Description intgetCount(int... c)Convert to unidimensional counter.int[]getCounts(int index)Convert to multidimensional counter.intgetDimension()Get 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.MultidimensionalCounter.Iteratoriterator()Create an iterator over this counter.java.lang.StringtoString()
-
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.- Specified by:
iteratorin interfacejava.lang.Iterable<java.lang.Integer>- Returns:
- the iterator.
-
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
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-