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
    class  MultidimensionalCounter.Iterator
    Perform iteration over the multidimensional counter.
  • Constructor Summary

    Constructors 
    Constructor Description
    MultidimensionalCounter​(int... size)
    Create a counter.
  • Method Summary

    Modifier and Type Method Description
    int getCount​(int... c)
    Convert to unidimensional counter.
    int[] getCounts​(int index)
    Convert to multidimensional counter.
    int getDimension()
    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.
    MultidimensionalCounter.Iterator iterator()
    Create an iterator over this counter.
    java.lang.String 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

  • Method Details

    • iterator

      Create an iterator over this counter.
      Specified by:
      iterator in interface java.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) throws OutOfRangeException
      Convert to multidimensional counter.
      Parameters:
      index - Index in unidimensional counter.
      Returns:
      the multidimensional counts.
      Throws:
      OutOfRangeException - if index is not between 0 and the value returned by getSize() (excluded).
    • getCount

      public int getCount​(int... c) throws OutOfRangeException, DimensionMismatchException
      Convert to unidimensional counter.
      Parameters:
      c - Indices in multidimensional counter.
      Returns:
      the index within the unidimensionl counter.
      Throws:
      DimensionMismatchException - if the size of c does not match the size of the array given in the constructor.
      OutOfRangeException - 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 java.lang.String toString()
      Overrides:
      toString in class java.lang.Object