org.apache.commons.math3.util
Class MultidimensionalCounter

java.lang.Object
  extended by org.apache.commons.math3.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:

Since:
2.2
Version:
$Id: MultidimensionalCounter.java 1382887 2012-09-10 14:37:27Z luc $

Nested Class Summary
 class MultidimensionalCounter.Iterator
          Perform iteration over the multidimensional counter.
 
Constructor Summary
MultidimensionalCounter(int... size)
          Create a counter.
 
Method Summary
 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.
 String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MultidimensionalCounter

public MultidimensionalCounter(int... size)
                        throws NotStrictlyPositiveException
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:
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 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 String toString()

Overrides:
toString in class Object


Copyright © 2003-2012 The Apache Software Foundation. All Rights Reserved.