Class MultidimensionalCounter

  • All Implemented Interfaces:
    Iterable<Integer>

    public class MultidimensionalCounter
    extends Object
    implements Iterable<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
    • Constructor Detail

    • Method Detail

      • getDimension

        public int getDimension()
        Get the number of dimensions of the multidimensional counter.
        Returns:
        the number of dimensions.
      • getCounts

        public int[] getCounts​(int index)
                        throws MathIllegalArgumentException
        Convert to multidimensional counter.
        Parameters:
        index - Index in unidimensional counter.
        Returns:
        the multidimensional counts.
        Throws:
        MathIllegalArgumentException - if index is not between 0 and the value returned by getSize() (excluded).
      • 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.