org.elasticsearch.util.gnu.trove
Class TObjectHash<T>

java.lang.Object
  extended by org.elasticsearch.util.gnu.trove.THash
      extended by org.elasticsearch.util.gnu.trove.TObjectHash<T>
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, java.lang.Cloneable, TObjectHashingStrategy<T>
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

See Also:
Serialized Form

Field Summary
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 org.elasticsearch.util.gnu.trove.THash
_autoCompactionFactor, _autoCompactRemovesRemaining, _free, _loadFactor, _maxSize, _size, DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR
 
Constructor Summary
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
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 org.elasticsearch.util.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