Class OnDemandHistogram3D

  • All Implemented Interfaces:
    Histogram3D

    public class OnDemandHistogram3D
    extends Object
    implements Histogram3D
    A data class for a three-dimensional histogram, creating counters on demand only, not allocating counters for all possible entries at the beginning. The creation on demand happens to save space.

    Note: Rewrote from scratch for version 0.15.0 to use hash tables instead of int arrays. New version creates and throws away a lot of objects, which had been a problem with early JVMs but should be OK these days.

    Author:
    Marco Schmidt
    • Field Detail

      • numUniqueValues

        private int numUniqueValues
      • maxValue1

        private final int maxValue1
      • maxValue2

        private final int maxValue2
      • maxValue3

        private final int maxValue3
    • Constructor Detail

      • OnDemandHistogram3D

        public OnDemandHistogram3D​(int max1,
                                   int max2,
                                   int max3)
        Creates a new histogram, internally creates the hash table for triplet values.
    • Method Detail

      • clear

        public void clear()
        Description copied from interface: Histogram3D
        Sets all counters to zero.
        Specified by:
        clear in interface Histogram3D
      • createNode

        private Histogram3DNode createNode​(int v1,
                                           int v2,
                                           int v3)
      • getEntry

        public int getEntry​(int index1,
                            int index2,
                            int index3)
        Description copied from interface: Histogram3D
        Returns the counter value of (index1, index2, index3).
        Specified by:
        getEntry in interface Histogram3D
        Parameters:
        index1 - first of the three values forming the threedimensional index
        index2 - second of the three values forming the threedimensional index
        index3 - three of the three values forming the threedimensional index
        Returns:
        the counter value of the desired index
      • getNumUsedEntries

        public int getNumUsedEntries()
        Description copied from interface: Histogram3D
        Returns the number of used entries (those entries with a counter value larger than zero).
        Specified by:
        getNumUsedEntries in interface Histogram3D
        Returns:
        number of non-zero counter values
      • increaseEntry

        public void increaseEntry​(int index1,
                                  int index2,
                                  int index3)
        Description copied from interface: Histogram3D
        Increases the counter value of (index1, index2, index3) by one. This method can be implemented by the one-liner setEntry(index1, index2, index3, getEntry(index1, index2, index3) + 1); However, implementations of this method may take advantage of implementation details to provide a more efficient approach.
        Specified by:
        increaseEntry in interface Histogram3D
        Parameters:
        index1 - first of the three values forming the threedimensional index
        index2 - second of the three values forming the threedimensional index
        index3 - three of the three values forming the threedimensional index
      • setEntry

        public void setEntry​(int index1,
                             int index2,
                             int index3,
                             int newValue)
        Description copied from interface: Histogram3D
        Sets the counter value of (index1, index2, index3) to newValue.
        Specified by:
        setEntry in interface Histogram3D
        Parameters:
        index1 - first of the three values forming the threedimensional index
        index2 - second of the three values forming the threedimensional index
        index3 - three of the three values forming the threedimensional index
        newValue - the counter value that is assigned to the argument index