Class Int2IntCounterMap

java.lang.Object
org.agrona.collections.Int2IntCounterMap

public class Int2IntCounterMap extends Object
An open-addressing with linear probing hash map specialised for primitive key and counter pairs. A counter map views counters which hit initialValue as deleted. This means that changing a counter may impact size().
  • Field Details

    • MIN_CAPACITY

      private static final int MIN_CAPACITY
      See Also:
    • loadFactor

      private final float loadFactor
    • initialValue

      private final int initialValue
    • resizeThreshold

      private int resizeThreshold
    • size

      private int size
    • entries

      private int[] entries
  • Constructor Details

    • Int2IntCounterMap

      public Int2IntCounterMap(int initialValue)
      Construct a new counter map with the initial value for the counter provided.
      Parameters:
      initialValue - to be used for each counter.
    • Int2IntCounterMap

      public Int2IntCounterMap(int initialCapacity, float loadFactor, int initialValue)
      Construct a new counter map with the initial value for the counter provided.
      Parameters:
      initialCapacity - of the map.
      loadFactor - applied for resize operations.
      initialValue - to be used for each counter.
  • Method Details

    • initialValue

      public int initialValue()
      The value to be used as a null marker in the map.
      Returns:
      value to be used as a null marker in the map.
    • loadFactor

      public float loadFactor()
      Get the load factor applied for resize operations.
      Returns:
      the load factor applied for resize operations.
    • resizeThreshold

      public int resizeThreshold()
      Get the actual threshold which when reached the map will resize. This is a function of the current capacity and load factor.
      Returns:
      the threshold when the map will resize.
    • capacity

      public int capacity()
      Get the total capacity for the map to which the load factor will be a fraction of.
      Returns:
      the total capacity for the map.
    • size

      public int size()
      The current size of the map which at not at initialValue().
      Returns:
      map size, counters at initialValue() are not counted
    • isEmpty

      public boolean isEmpty()
      Is the map empty.
      Returns:
      size == 0
    • get

      public int get(int key)
      Get the value of a counter associated with a key or initialValue() if not found.
      Parameters:
      key - to lookup.
      Returns:
      counter value associated with key or initialValue() if not found.
    • put

      public int put(int key, int value)
      Put the value for a key in the map.
      Parameters:
      key - lookup key.
      value - new value, must not be initialValue.
      Returns:
      current counter value associated with key, or initialValue() if none found.
      Throws:
      IllegalArgumentException - if value is initialValue().
    • incrementAndGet

      public int incrementAndGet(int key)
      Convenience version of addAndGet(int, int) (key, 1).
      Parameters:
      key - for the counter.
      Returns:
      the new value.
    • decrementAndGet

      public int decrementAndGet(int key)
      Convenience version of addAndGet(int, int) (key, -1).
      Parameters:
      key - for the counter.
      Returns:
      the new value.
    • addAndGet

      public int addAndGet(int key, int amount)
      Add amount to the current value associated with this key. If no such value exists use initialValue() as current value and associate key with initialValue() + amount unless amount is 0, in which case map remains unchanged.
      Parameters:
      key - new or existing
      amount - to be added
      Returns:
      the new value associated with the key, or initialValue() + amount if no mapping for key.
    • getAndIncrement

      public int getAndIncrement(int key)
      Convenience version of getAndAdd(int, int) (key, 1).
      Parameters:
      key - for the counter.
      Returns:
      the old value.
    • getAndDecrement

      public int getAndDecrement(int key)
      Convenience version of getAndAdd(int, int) (key, -1).
      Parameters:
      key - for the counter.
      Returns:
      the old value.
    • getAndAdd

      public int getAndAdd(int key, int amount)
      Add amount to the current value associated with this key. If no such value exists use initialValue() as current value and associate key with initialValue() + amount unless amount is 0, in which case map remains unchanged.
      Parameters:
      key - new or existing.
      amount - to be added.
      Returns:
      the previous value associated with the key, or initialValue() if no mapping for key.
    • forEach

      public void forEach(IntIntConsumer consumer)
      Iterate over all value in the map which are not at initialValue().
      Parameters:
      consumer - called for each key/value pair in the map.
    • containsKey

      public boolean containsKey(int key)
      Does the map contain a value for a given key which is not initialValue().
      Parameters:
      key - the key to check.
      Returns:
      true if the map contains the key with a value other than initialValue(), false otherwise.
    • containsValue

      public boolean containsValue(int value)
      Iterate over the values to see if any match the provided value.

      If value provided is initialValue() then it will always return false.

      Parameters:
      value - the key to check.
      Returns:
      true if the map contains value as a mapped value, false otherwise.
    • clear

      public void clear()
      Clear out all entries.
    • compact

      public void compact()
      Compact the backing arrays by rehashing with a capacity just larger than current size and giving consideration to the load factor.
    • computeIfAbsent

      public int computeIfAbsent(int key, IntUnaryOperator mappingFunction)
      Try get(int) a value for a key and if not present then apply mapping function.
      Parameters:
      key - to search on.
      mappingFunction - to provide a value if the get returns null.
      Returns:
      the value if found otherwise the missing value.
    • remove

      public int remove(int key)
      Remove a counter value for a given key.
      Parameters:
      key - to be removed
      Returns:
      old value for key
    • minValue

      public int minValue()
      Get the minimum value stored in the map. If the map is empty then it will return initialValue().
      Returns:
      the minimum value stored in the map.
    • maxValue

      public int maxValue()
      Get the maximum value stored in the map. If the map is empty then it will return initialValue().
      Returns:
      the maximum value stored in the map.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • next

      private static int next(int index, int mask)
    • compactChain

      private void compactChain(int deleteKeyIndex)
    • capacity

      private void capacity(int newCapacity)
    • increaseCapacity

      private void increaseCapacity()
    • rehash

      private void rehash(int newCapacity)