gnu.trove

## Class TObjectHash<T>

- java.lang.Object
- - gnu.trove.THash
  - - gnu.trove.TObjectHash<T>

All Implemented Interfaces:
  TObjectHashingStrategy<T>, java.io.Externalizable, java.io.Serializable, java.lang.Cloneable

Direct Known Subclasses:
  THashMap, THashSet, TObjectByteHashMap, TObjectDoubleHashMap, TObjectFloatHashMap, TObjectIntHashMap, TObjectLongHashMap, TObjectShortHashMap

    public abstract class TObjectHash<T>
    extends THash
    implements TObjectHashingStrategy<T>

An open addressed hashing implementation for Object types. Created: Sun Nov 4 08:56:06 2001

Version:
  $Id: TObjectHash.java,v 1.27 2009/06/01 22:14:44 robeden Exp $
Author:
  Eric D. Friedman
See Also:
  Serialized Form

### Field Summary

Fields
`protected TObjectHashingStrategy<T>` `_hashingStrategy` the strategy used to hash objects in this collection.
`protected java.lang.Object[]` `_set` the set of Objects
`protected static java.lang.Object` `FREE`
`protected static java.lang.Object` `REMOVED`

### Fields inherited from class gnu.trove.THash

`_autoCompactionFactor, _autoCompactRemovesRemaining, _free, _loadFactor, _maxSize, _size, DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR`

### Constructor Summary

Constructors
Constructor and Description
`TObjectHash()` Creates a new `TObjectHash` instance with the default capacity and load factor.
`TObjectHash(int initialCapacity)` Creates a new `TObjectHash` instance whose capacity is the next highest prime above `initialCapacity + 1` unless that value is already prime.
`TObjectHash(int initialCapacity, float loadFactor)` Creates a new `TObjectHash` instance with a prime value at or near the specified capacity and load factor.
`TObjectHash(int initialCapacity, float loadFactor, TObjectHashingStrategy<T> strategy)` Creates a new `TObjectHash` instance with a prime value at or near the specified capacity and load factor.
`TObjectHash(int initialCapacity, TObjectHashingStrategy<T> strategy)` Creates a new `TObjectHash` instance whose capacity is the next highest prime above `initialCapacity + 1` unless that value is already prime.
`TObjectHash(TObjectHashingStrategy<T> strategy)` Creates a new `TObjectHash` instance with the default capacity and load factor and a custom hashing strategy.

### Method Summary

Methods
`protected int` `capacity()`
`TObjectHash<T>` `clone()`
`int` `computeHashCode(T o)` This is the default implementation of TObjectHashingStrategy: it delegates hashing to the Object's hashCode method.
`boolean` `contains(java.lang.Object obj)` Searches the set for `obj`
`boolean` `equals(T o1, T o2)` This is the default implementation of TObjectHashingStrategy: it delegates equality comparisons to the first parameter's equals() method.
`boolean` `forEach(TObjectProcedure<T> procedure)` Executes `procedure` for each element in the set.
`protected int` `index(T obj)` Locates the index of `obj`.
`protected int` `insertionIndex(T obj)` Locates the index at which `obj` can be inserted.
`void` `readExternal(java.io.ObjectInput in)`
`protected void` `removeAt(int index)` Delete the record at `index`.
`protected int` `setUp(int initialCapacity)` initializes the Object set of this hash table.
`protected void` `throwObjectContractViolation(java.lang.Object o1, java.lang.Object o2)` Convenience methods for subclasses to use in throwing exceptions about badly behaved user objects employed as keys.
`void` `writeExternal(java.io.ObjectOutput out)`

### Methods inherited from class gnu.trove.THash

`calculateGrownCapacity, clear, compact, ensureCapacity, getAutoCompactionFactor, isEmpty, postInsertHook, reenableAutoCompaction, rehash, setAutoCompactionFactor, size, tempDisableAutoCompaction, trimToSize`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### _set

    protected transient java.lang.Object[] _set

the set of Objects

#### _hashingStrategy

    protected TObjectHashingStrategy<T> _hashingStrategy

the strategy used to hash objects in this collection.

#### REMOVED

    protected static final java.lang.Object REMOVED

#### FREE

    protected static final java.lang.Object FREE

### Constructor Detail

#### TObjectHash

    public TObjectHash()

Creates a new `TObjectHash` instance with the default capacity and load factor.

#### TObjectHash

    public TObjectHash(TObjectHashingStrategy<T> strategy)

Creates a new `TObjectHash` instance with the default capacity and load factor and a custom hashing strategy.

Parameters:
  `strategy` - used to compute hash codes and to compare objects.

#### 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,
               TObjectHashingStrategy<T> strategy)

Creates a new `TObjectHash` instance whose capacity is the next highest prime above `initialCapacity + 1` unless that value is already prime. Uses the specified custom hashing strategy.

Parameters:
  `initialCapacity` - an `int` value
  `strategy` - used to compute hash codes and to compare objects.

#### 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.

#### TObjectHash

    public TObjectHash(int initialCapacity,
               float loadFactor,
               TObjectHashingStrategy<T> strategy)

Creates a new `TObjectHash` instance with a prime value at or near the specified capacity and load factor. Uses the specified custom hashing strategy.

Parameters:
  `initialCapacity` - used to find a prime capacity for the table.
  `loadFactor` - used to calculate the threshold over which rehashing takes place.
  `strategy` - used to compute hash codes and to compare objects.

### Method Detail

#### clone

    public TObjectHash<T> clone()

Overrides:
  `clone` in class `THash`
Returns:
  a shallow clone of this collection

#### capacity

    protected 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

    protected 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<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(java.lang.Object obj)

Searches the set for `obj`

Parameters:
  `obj` - an `Object` value
Returns:
  a `boolean` value

#### index

    protected int index(T 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

    protected int insertionIndex(T obj)

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

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

#### computeHashCode

    public final int computeHashCode(T o)

This is the default implementation of TObjectHashingStrategy: it delegates hashing to the Object's hashCode method.

Specified by:
  `computeHashCode` in interface `TObjectHashingStrategy<T>`
Parameters:
  `o` - for which the hashcode is to be computed
Returns:
  the hashCode
See Also:
  `Object.hashCode()`

#### equals

    public final boolean equals(T o1,
                 T o2)

This is the default implementation of TObjectHashingStrategy: it delegates equality comparisons to the first parameter's equals() method.

Specified by:
  `equals` in interface `TObjectHashingStrategy<T>`
Parameters:
  `o1` - an `Object` value
  `o2` - an `Object` value
Returns:
  true if the objects are equal
See Also:
  `Object.equals(Object)`

#### throwObjectContractViolation

    protected final void throwObjectContractViolation(java.lang.Object o1,
                                    java.lang.Object o2)
                                               throws java.lang.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:
  `java.lang.IllegalArgumentException` - the whole point of this method.

#### writeExternal

    public void writeExternal(java.io.ObjectOutput out)
                       throws java.io.IOException

Specified by:
  `writeExternal` in interface `java.io.Externalizable`
Overrides:
  `writeExternal` in class `THash`
Throws:
  `java.io.IOException`

#### readExternal

    public void readExternal(java.io.ObjectInput in)
                      throws java.io.IOException,
                             java.lang.ClassNotFoundException

Specified by:
  `readExternal` in interface `java.io.Externalizable`
Overrides:
  `readExternal` in class `THash`
Throws:
  `java.io.IOException`
  `java.lang.ClassNotFoundException`