Class MultidimensionalCounter

java.lang.Object
org.hipparchus.util.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 Details

  • Method Details

    • iterator

      Create an iterator over this counter.
      Specified by:
      iterator in interface Iterable<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) 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).
    • getCount

      public int getCount(int... c) throws MathIllegalArgumentException
      Convert to unidimensional counter.
      Parameters:
      c - Indices in multidimensional counter.
      Returns:
      the index within the unidimensionl counter.
      Throws:
      MathIllegalArgumentException - if the size of c does not match the size of the array given in the constructor.
      MathIllegalArgumentException - if a value of c is not in the range of the corresponding dimension, as defined in the constructor.
    • 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 String toString()
      Overrides:
      toString in class Object