Package gnu.trove.map.hash

# Class TIntObjectHashMap<V>

java.lang.Object
gnu.trove.impl.hash.THash
gnu.trove.impl.hash.TPrimitiveHash
gnu.trove.impl.hash.TIntHash
gnu.trove.map.hash.TIntObjectHashMap<V>

All Implemented Interfaces:
  `TIntObjectMap<V>`, `Externalizable`, `Serializable`

public class TIntObjectHashMap<V> extends gnu.trove.impl.hash.TIntHash implements TIntObjectMap<V>, Externalizable
An open addressed Map implementation for int keys and Object values. Created: Sun Nov 4 08:52:45 2001

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`TIntObjectHashMap.ValueView`
a view onto the values of the map.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected V[]`
`_values`
the values of the map
`protected int`
`no_entry_key`
the value that represents null in the key set.

### Fields inherited from class gnu.trove.impl.hash.TIntHash

`_set, consumeFreeSlot, no_entry_value`

### Fields inherited from class gnu.trove.impl.hash.TPrimitiveHash

`_states, FREE, FULL, REMOVED`

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

`_autoCompactionFactor, _autoCompactRemovesRemaining, _autoCompactTemporaryDisable, _free, _loadFactor, _maxSize, _size, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR`

## Constructor Summary

Constructors
Constructor
Description
`TIntObjectHashMap()`
Creates a new `TIntObjectHashMap` instance with the default capacity and load factor.
`TIntObjectHashMap(int initialCapacity)`
Creates a new `TIntObjectHashMap` instance with a prime capacity equal to or greater than `initialCapacity` and with the default load factor.
`TIntObjectHashMap(int initialCapacity, float loadFactor)`
Creates a new `TIntObjectHashMap` instance with a prime capacity equal to or greater than `initialCapacity` and with the specified load factor.
`TIntObjectHashMap(int initialCapacity, float loadFactor, int noEntryKey)`
Creates a new `TIntObjectHashMap` instance with a prime value at or near the specified capacity and load factor.
`TIntObjectHashMap(TIntObjectMap<? extends V> map)`
Creates a new `TIntObjectHashMap` that contains the entries in the map passed to it.

## Method Summary

Modifier and Type
Method
Description
`void`
`clear()`
Empties the collection.
`boolean`
`containsKey(int key)`
Returns `true` if this map contains a mapping for the specified key.
`boolean`
`containsValue(Object val)`
Returns `true` if this map maps one or more keys to the specified value.
`boolean`
`equals(Object other)`
Compares the specified object with this map for equality.
`boolean`
`forEachEntry(TIntObjectProcedure<? super V> procedure)`
Executes `procedure` for each key/value entry in the map.
`boolean`
`forEachKey(TIntProcedure procedure)`
Executes `procedure` for each key in the map.
`boolean`
`forEachValue(TObjectProcedure<? super V> procedure)`
Executes `procedure` for each value in the map.
`V`
`get(int key)`
Returns the value to which the specified key is mapped, or `null` if this map contains no mapping for the key.
`int`
`getNoEntryKey()`
Returns the value that represents null in the `TIntObjectMap.keySet()`.
`int`
`hashCode()`
Returns the hash code value for this map.
`TIntObjectIterator<V>`
`iterator()`
Returns a `TIntObjectIterator` with access to this map's keys and values.
`int[]`
`keys()`
Returns a copy of the keys of the map as an array.
`int[]`
`keys(int[] dest)`
Returns a copy of the keys of the map as an array.
`TIntSet`
`keySet()`
Returns a `TIntSet` view of the keys contained in this map.
`V`
`put(int key, V value)`
Associates the specified value with the specified key in this map (optional operation).
`void`
`putAll(TIntObjectMap<? extends V> map)`
Put all the entries from the given map into this map.
`void`
`putAll(Map<? extends Integer,? extends V> map)`
Copies all of the mappings from the specified map to this map (optional operation).
`V`
`putIfAbsent(int key, V value)`
Inserts a key/value pair into the map if the specified key is not already associated with a value.
`void`
`readExternal(ObjectInput in)`
`protected void`
`rehash(int newCapacity)`
Rehashes the set.
`V`
`remove(int key)`
Removes the mapping for a key from this map if it is present (optional operation).
`protected void`
`removeAt(int index)`
Releases the element currently stored at `index`.
`boolean`
`retainEntries(TIntObjectProcedure<? super V> procedure)`
Retains only those entries in the map for which the procedure returns a true value.
`protected int`
`setUp(int initialCapacity)`
initializes the hashtable to a prime capacity which is at least `initialCapacity + 1`.
`String`
`toString()`
`void`
`transformValues(TObjectFunction<V,V> function)`
Transform the values in this map using `function`.
`Collection<V>`
`valueCollection()`
Returns a `Collection` view of the values contained in this map.
`Object[]`
`values()`
Returns the values of the map as an Object array.
`V[]`
`values(V[] dest)`
Returns the values of the map using an existing array.
`void`
`writeExternal(ObjectOutput out)`

### Methods inherited from class gnu.trove.impl.hash.TIntHash

`contains, forEach, getNoEntryValue, index, insertKey`

### Methods inherited from class gnu.trove.impl.hash.TPrimitiveHash

`capacity`

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

`calculateGrownCapacity, compact, computeMaxSize, computeNextAutoCompactionAmount, ensureCapacity, getAutoCompactionFactor, isEmpty, postInsertHook, reenableAutoCompaction, setAutoCompactionFactor, size, tempDisableAutoCompaction, trimToSize`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface gnu.trove.map.TIntObjectMap

`isEmpty, size`

## Field Details

### _values

protected transient V[] _values
the values of the map

### no_entry_key

protected int no_entry_key
the value that represents null in the key set.

## Constructor Details

### TIntObjectHashMap

public TIntObjectHashMap()
Creates a new `TIntObjectHashMap` instance with the default capacity and load factor.

### TIntObjectHashMap

public TIntObjectHashMap(int initialCapacity)
Creates a new `TIntObjectHashMap` instance with a prime capacity equal to or greater than `initialCapacity` and with the default load factor.

Parameters:
  `initialCapacity` - an `int` value

### TIntObjectHashMap

public TIntObjectHashMap(int initialCapacity, float loadFactor)
Creates a new `TIntObjectHashMap` instance with a prime capacity equal to or greater than `initialCapacity` and with the specified load factor.

Parameters:
  `initialCapacity` - an `int` value
  `loadFactor` - a `float` value

### TIntObjectHashMap

public TIntObjectHashMap(int initialCapacity, float loadFactor, int noEntryKey)
Creates a new `TIntObjectHashMap` 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.
  `noEntryKey` - the value used to represent null in the key set.

### TIntObjectHashMap

public TIntObjectHashMap(TIntObjectMap<? extends V> map)
Creates a new `TIntObjectHashMap` that contains the entries in the map passed to it.

Parameters:
  `map` - the `TIntObjectMap` to be copied.

## Method Details

### setUp

protected int setUp(int initialCapacity)
initializes the hashtable to a prime capacity which is at least `initialCapacity + 1`.

Overrides:
  `setUp` in class `gnu.trove.impl.hash.TIntHash`
Parameters:
  `initialCapacity` - an `int` value
Returns:
  the actual capacity chosen

### rehash

protected void rehash(int newCapacity)
Rehashes the set.

Specified by:
  `rehash` in class `gnu.trove.impl.hash.THash`
Parameters:
  `newCapacity` - an `int` value

### getNoEntryKey

public int getNoEntryKey()
Returns the value that represents null in the `TIntObjectMap.keySet()`. The default value is generally zero, but can be changed during construction of the collection.

Specified by:
  `getNoEntryKey` in interface `TIntObjectMap<V>`
Returns:
  the value that represents a null value in this collection.

### containsKey

public boolean containsKey(int key)
Returns `true` if this map contains a mapping for the specified key. More formally, returns `true` if and only if this map contains a mapping for a key `k` such that `key.equals(k)`. (There can be at most one such mapping.)

Specified by:
  `containsKey` in interface `TIntObjectMap<V>`
Parameters:
  `key` - key whose presence in this map is to be tested
Returns:
  `true` if this map contains a mapping for the specified key

### containsValue

public boolean containsValue(Object val)
Returns `true` if this map maps one or more keys to the specified value. More formally, returns `true` if and only if this map contains at least one mapping to a value `v` such that `(value==null ? v==null : value.equals(v))`. This operation will probably require time linear in the map size for most implementations of the `Map` interface.

Specified by:
  `containsValue` in interface `TIntObjectMap<V>`
Parameters:
  `val` - value whose presence in this map is to be tested
Returns:
  `true` if this map maps one or more keys to the specified value

### get

public V get(int key)
Returns the value to which the specified key is mapped, or `null` if this map contains no mapping for the key.

More formally, if this map contains a mapping from a key `k` to a value `v` such that `(key==null ? k==null : key.equals(k))`, then this method returns `v`; otherwise it returns `null`. (There can be at most one such mapping.)

If this map permits null values, then a return value of `null` does not necessarily indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to `null`. The `containsKey` operation may be used to distinguish these two cases.

Specified by:
  `get` in interface `TIntObjectMap<V>`
Parameters:
  `key` - the key whose associated value is to be returned
Returns:
  the `int` value to which the specified key is mapped, or `null` if this map contains no mapping for the key

### put

public V put(int key, V value)
Associates the specified value with the specified key in this map (optional operation). If the map previously contained a mapping for the key, the old value is replaced by the specified value. (A map `m` is said to contain a mapping for a key `k` if and only if `m.containsKey(k)` would return `true`.)

Specified by:
  `put` in interface `TIntObjectMap<V>`
Parameters:
  `key` - key with which the specified value is to be associated
  `value` - an `int` value value to be associated with the specified key
Returns:
  the previous value associated with `key`, or `no_entry_value` if there was no mapping for `key`. (A `no_entry_value` return can also indicate that the map previously associated `null` with `key`, if the implementation supports `null` values.)
See Also:
  - `TIntObjectMap.getNoEntryKey()`

### putIfAbsent

public V putIfAbsent(int key, V value)
Inserts a key/value pair into the map if the specified key is not already associated with a value.

Specified by:
  `putIfAbsent` in interface `TIntObjectMap<V>`
Parameters:
  `key` - key with which the specified value is to be associated
  `value` - an `int` value to be associated with the specified key
Returns:
  the previous value associated with `key`, or null if none was found.

### remove

public V remove(int key)
Removes the mapping for a key from this map if it is present (optional operation). More formally, if this map contains a mapping from key `k` to value `v` such that `key.equals(k)`, that mapping is removed. (The map can contain at most one such mapping.)

Returns the value to which this map previously associated the key, or `null` if the map contained no mapping for the key.

If this map permits null values, then a return value of `null` does not necessarily indicate that the map contained no mapping for the key; it's also possible that the map explicitly mapped the key to `null`.

The map will not contain a mapping for the specified key once the call returns.

Specified by:
  `remove` in interface `TIntObjectMap<V>`
Parameters:
  `key` - key whose mapping is to be removed from the map
Returns:
  the previous `int` value associated with `key`, or `null` if there was no mapping for `key`.

### removeAt

protected void removeAt(int index)
Releases the element currently stored at `index`.

Overrides:
  `removeAt` in class `gnu.trove.impl.hash.TIntHash`
Parameters:
  `index` - an `int` value

### putAll

public void putAll(Map<? extends Integer,? extends V> map)
Copies all of the mappings from the specified map to this map (optional operation). The effect of this call is equivalent to that of calling `put(k, v)` on this map once for each mapping from key `k` to value `v` in the specified map. The behavior of this operation is undefined if the specified map is modified while the operation is in progress.

Specified by:
  `putAll` in interface `TIntObjectMap<V>`
Parameters:
  `map` - mappings to be stored in this map

### putAll

public void putAll(TIntObjectMap<? extends V> map)
Put all the entries from the given map into this map.

Specified by:
  `putAll` in interface `TIntObjectMap<V>`
Parameters:
  `map` - The map from which entries will be obtained to put into this map.

### clear

public void clear()
Empties the collection.

Specified by:
  `clear` in interface `TIntObjectMap<V>`
Overrides:
  `clear` in class `gnu.trove.impl.hash.THash`

### keySet

public TIntSet keySet()
Returns a `TIntSet` view of the keys contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. It does not support the `add` or `addAll` operations.

Specified by:
  `keySet` in interface `TIntObjectMap<V>`
Returns:
  a set view of the keys contained in this map

### keys

public int[] keys()
Returns a copy of the keys of the map as an array. Changes to the array of keys will not be reflected in the map nor vice-versa.

Specified by:
  `keys` in interface `TIntObjectMap<V>`
Returns:
  a copy of the keys of the map as an array.

### keys

public int[] keys(int[] dest)
Returns a copy of the keys of the map as an array. Changes to the array of keys will not be reflected in the map nor vice-versa.

Specified by:
  `keys` in interface `TIntObjectMap<V>`
Parameters:
  `dest` - the array into which the elements of the list are to be stored, if it is big enough; otherwise, a new array of the same type is allocated for this purpose.
Returns:
  the keys of the map as an array.

### valueCollection

public Collection<V> valueCollection()
Returns a `Collection` view of the values contained in this map. The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa. If the map is modified while an iteration over the collection is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The collection supports element removal, which removes the corresponding mapping from the map, via the `Iterator.remove`, `Collection.remove`, `removeAll`, `retainAll` and `clear` operations. It does not support the `add` or `addAll` operations.

Specified by:
  `valueCollection` in interface `TIntObjectMap<V>`
Returns:
  a collection view of the values contained in this map

### values

public Object[] values()
Returns the values of the map as an Object array. Note that the array returned is typed as an Object[] and may not be cast to a more specific type. See `TIntObjectMap.values(V[])` for a version which allows specifically typed arrays. Changes to the array of values will not be reflected in the map nor vice-versa.

Specified by:
  `values` in interface `TIntObjectMap<V>`
Returns:
  the values of the map as an array of `int` values.

### values

public V[] values(V[] dest)
Returns the values of the map using an existing array. Changes to the array of values will not be reflected in the map nor vice-versa.

Specified by:
  `values` in interface `TIntObjectMap<V>`
Parameters:
  `dest` - the array into which the elements of the list are to be stored, if it is big enough; otherwise, a new array of the same type is allocated for this purpose.
Returns:
  the values of the map as an array of `int` values.

### iterator

public TIntObjectIterator<V> iterator()
Returns a `TIntObjectIterator` with access to this map's keys and values.

Specified by:
  `iterator` in interface `TIntObjectMap<V>`
Returns:
  a `TIntObjectIterator` with access to this map's keys and values.

### forEachKey

public boolean forEachKey(TIntProcedure procedure)
Executes `procedure` for each key in the map.

Specified by:
  `forEachKey` in interface `TIntObjectMap<V>`
Parameters:
  `procedure` - a `TObjectProcedure` value
Returns:
  false if the loop over the keys terminated because the procedure returned false for some key.

### forEachValue

public boolean forEachValue(TObjectProcedure<? super V> procedure)
Executes `procedure` for each value in the map.

Specified by:
  `forEachValue` in interface `TIntObjectMap<V>`
Parameters:
  `procedure` - a `TObjectProcedure` value
Returns:
  false if the loop over the values terminated because the procedure returned false for some value.

### forEachEntry

public boolean forEachEntry(TIntObjectProcedure<? super V> procedure)
Executes `procedure` for each key/value entry in the map.

Specified by:
  `forEachEntry` in interface `TIntObjectMap<V>`
Parameters:
  `procedure` - a `TIntObjectProcedure` value
Returns:
  false if the loop over the entries terminated because the procedure returned false for some entry.

### retainEntries

public boolean retainEntries(TIntObjectProcedure<? super V> procedure)
Retains only those entries in the map for which the procedure returns a true value.

Specified by:
  `retainEntries` in interface `TIntObjectMap<V>`
Parameters:
  `procedure` - determines which entries to keep
Returns:
  true if the map was modified.

### transformValues

public void transformValues(TObjectFunction<V,V> function)
Transform the values in this map using `function`.

Specified by:
  `transformValues` in interface `TIntObjectMap<V>`
Parameters:
  `function` - a `TObjectFunction` value

### equals

public boolean equals(Object other)
Compares the specified object with this map for equality. Returns `true` if the given object is also a map and the two maps represent the same mappings. More formally, two maps `m1` and `m2` represent the same mappings if `m1.entrySet().equals(m2.entrySet())`. This ensures that the `equals` method works properly across different implementations of the `Map` interface.

Specified by:
  `equals` in interface `TIntObjectMap<V>`
Overrides:
  `equals` in class `Object`
Parameters:
  `other` - object to be compared for equality with this map
Returns:
  `true` if the specified object is equal to this map

### hashCode

public int hashCode()
Returns the hash code value for this map. The hash code of a map is defined to be the sum of the hash codes of each entry in the map's `entrySet()` view. This ensures that `m1.equals(m2)` implies that `m1.hashCode()==m2.hashCode()` for any two maps `m1` and `m2`, as required by the general contract of `Object.hashCode()`.

Specified by:
  `hashCode` in interface `TIntObjectMap<V>`
Overrides:
  `hashCode` in class `Object`
Returns:
  the hash code value for this map
See Also:
  - `Object.equals(Object)`
  - `TIntObjectMap.equals(Object)`

### writeExternal

public void writeExternal(ObjectOutput out) throws IOException

Specified by:
  `writeExternal` in interface `Externalizable`
Overrides:
  `writeExternal` in class `gnu.trove.impl.hash.THash`
Throws:
  `IOException`

### readExternal

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException

Specified by:
  `readExternal` in interface `Externalizable`
Overrides:
  `readExternal` in class `gnu.trove.impl.hash.THash`
Throws:
  `IOException`
  `ClassNotFoundException`

### toString

public String toString()

Overrides:
  `toString` in class `Object`