Package org.apache.commons.math.util
Class MultidimensionalCounter
- java.lang.Object
 - 
- org.apache.commons.math.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
All Methods Instance Methods Concrete Methods 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 Detail
- 
MultidimensionalCounter
public MultidimensionalCounter(int... size)
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 Detail
- 
iterator
public MultidimensionalCounter.Iterator 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
public int[] getCounts(int index)
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
public int getCount(int... c) throws OutOfRangeExceptionConvert 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
 
 - 
 
 -