Class TObjectHash<T>

java.lang.Object
gnu.trove.impl.hash.THash
gnu.trove.impl.hash.TObjectHash<T>
All Implemented Interfaces:
Externalizable, Serializable
Direct Known Subclasses:
TCustomObjectHash, THashMap, THashSet, TObjectByteHashMap, TObjectCharHashMap, TObjectDoubleHashMap, TObjectFloatHashMap, TObjectIntHashMap, TObjectLongHashMap, TObjectShortHashMap

public abstract class TObjectHash<T> extends THash
An open addressed hashing implementation for Object types.
Created: Sun Nov 4 08:56:06 2001
See Also:
  • Field Details

    • _set

      public transient Object[] _set
      the set of Objects
    • REMOVED

      public static final Object REMOVED
    • FREE

      public static final Object FREE
    • consumeFreeSlot

      protected boolean consumeFreeSlot
      Indicates whether the last insertKey() call used a FREE slot. This field should be inspected right after call insertKey()
  • Constructor Details

    • TObjectHash

      public TObjectHash()
      Creates a new TObjectHash instance with the default capacity and load factor.
    • TObjectHash

      public TObjectHash(int initialCapacity)
      Creates a new TObjectHash instance whose capacity is the next highest prime above initialCapacity + 1 unless that value is already prime.
      Parameters:
      initialCapacity - an int value
    • TObjectHash

      public TObjectHash(int initialCapacity, float loadFactor)
      Creates a new TObjectHash instance with a prime value at or near the specified capacity and load factor.
      Parameters:
      initialCapacity - used to find a prime capacity for the table.
      loadFactor - used to calculate the threshold over which rehashing takes place.
  • Method Details

    • capacity

      public int capacity()
      Specified by:
      capacity in class THash
      Returns:
      the current physical capacity of the hash table.
    • removeAt

      protected void removeAt(int index)
      Description copied from class: THash
      Delete the record at index. Reduces the size of the collection by one.
      Overrides:
      removeAt in class THash
      Parameters:
      index - an int value
    • setUp

      public int setUp(int initialCapacity)
      initializes the Object set of this hash table.
      Overrides:
      setUp in class THash
      Parameters:
      initialCapacity - an int value
      Returns:
      an int value
    • forEach

      public boolean forEach(TObjectProcedure<? super T> procedure)
      Executes procedure for each element in the set.
      Parameters:
      procedure - a TObjectProcedure value
      Returns:
      false if the loop over the set terminated because the procedure returned false for some value.
    • contains

      public boolean contains(Object obj)
      Searches the set for obj
      Parameters:
      obj - an Object value
      Returns:
      a boolean value
    • index

      protected int index(Object obj)
      Locates the index of obj.
      Parameters:
      obj - an Object value
      Returns:
      the index of obj or -1 if it isn't in the set.
    • insertionIndex

      @Deprecated protected int insertionIndex(T obj)
      Deprecated.
      use insertKey(T) instead
      Alias introduced to avoid breaking the API. The new method name insertKey() reflects the changes made to the logic.
      Parameters:
      obj -
    • insertKey

      protected int insertKey(T key)

      Locates the index at which key can be inserted. if there is already a value equal()ing key in the set, returns that value's index as -index - 1.

      If a slot is found the value is inserted. When a FREE slot is used the consumeFreeSlot field is set to true. This field should be used in the method invoking insertKey() to pass to postInsertHook()

      Parameters:
      key - an Object value
      Returns:
      the index of a FREE slot at which key can be inserted or, if key is already stored in the hash, the negative value of that index, minus 1: -index -1.
    • throwObjectContractViolation

      protected final void throwObjectContractViolation(Object o1, Object o2) throws IllegalArgumentException
      Convenience methods for subclasses to use in throwing exceptions about badly behaved user objects employed as keys. We have to throw an IllegalArgumentException with a rather verbose message telling the user that they need to fix their object implementation to conform to the general contract for java.lang.Object.
      Parameters:
      o1 - the first of the equal elements with unequal hash codes.
      o2 - the second of the equal elements with unequal hash codes.
      Throws:
      IllegalArgumentException - the whole point of this method.
    • throwObjectContractViolation

      protected final void throwObjectContractViolation(Object o1, Object o2, int size, int oldSize, Object[] oldKeys) throws IllegalArgumentException
      Convenience methods for subclasses to use in throwing exceptions about badly behaved user objects employed as keys. We have to throw an IllegalArgumentException with a rather verbose message telling the user that they need to fix their object implementation to conform to the general contract for java.lang.Object.
      Parameters:
      o1 - the first of the equal elements with unequal hash codes.
      o2 - the second of the equal elements with unequal hash codes.
      size -
      oldSize -
      oldKeys - @throws IllegalArgumentException the whole point of this method.
      Throws:
      IllegalArgumentException
    • buildObjectContractViolation

      protected final IllegalArgumentException buildObjectContractViolation(Object o1, Object o2, String extra)
      Convenience methods for subclasses to use in throwing exceptions about badly behaved user objects employed as keys. We have to throw an IllegalArgumentException with a rather verbose message telling the user that they need to fix their object implementation to conform to the general contract for java.lang.Object.
      Parameters:
      o1 - the first of the equal elements with unequal hash codes.
      o2 - the second of the equal elements with unequal hash codes.
      Throws:
      IllegalArgumentException - the whole point of this method.
    • equals

      protected boolean equals(Object notnull, Object two)
    • hash

      protected int hash(Object notnull)
    • reportPotentialConcurrentMod

      protected static String reportPotentialConcurrentMod(int newSize, int oldSize)
    • dumpExtraInfo

      protected String dumpExtraInfo(Object newVal, Object oldVal, int currentSize, int oldSize, Object[] oldKeys)
      Parameters:
      newVal - the key being inserted
      oldVal - the key already stored at that position
      currentSize - size of the key set during rehashing
      oldSize - size of the key set before rehashing
      oldKeys - the old key set
    • objectInfo

      protected static String objectInfo(Object o)
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Specified by:
      writeExternal in interface Externalizable
      Overrides:
      writeExternal in class THash
      Throws:
      IOException
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Specified by:
      readExternal in interface Externalizable
      Overrides:
      readExternal in class THash
      Throws:
      IOException
      ClassNotFoundException