Package org.hipparchus.util
Class MultidimensionalCounter
java.lang.Object
org.hipparchus.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
-
Nested Class Summary
Modifier and TypeClassDescriptionclass
Perform iteration over the multidimensional counter. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
getCount
(int... c) Convert to unidimensional counter.int[]
getCounts
(int index) Convert to multidimensional counter.int
Get the number of dimensions of the multidimensional counter.int
getSize()
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, wait
Methods 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:
MathIllegalArgumentException
- 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:
MathIllegalArgumentException
- ifindex
is not between0
and the value returned bygetSize()
(excluded).
-
getCount
Convert to unidimensional counter.- Parameters:
c
- Indices in multidimensional counter.- Returns:
- the index within the unidimensionl counter.
- Throws:
MathIllegalArgumentException
- if the size ofc
does not match the size of the array given in the constructor.MathIllegalArgumentException
- if a value ofc
is 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
-