@Generated(date="2015-05-07T09:33:03+0200", value="KTypeVTypeHashMap.java") public class ObjectShortHashMap<KType> extends Objectimplements ObjectShortMap <KType>, Preallocable , Cloneable
Object to
short, implemented using open addressing with linear probing for collision resolution.
Note: read about important differences between hash and scatter sets.
ObjectShortScatterMap,
HPPC interfaces diagram
| Modifier and Type | Class and Description |
|---|---|
class |
ObjectShortHashMap
A view of the keys inside this hash map.
|
| Modifier and Type | Field and Description |
|---|---|
protected int |
assigned
The number of stored keys (assigned key slots), excluding the special "empty" key, if any (use
size() instead).
|
protected boolean |
hasEmptyKey
Special treatment for the "empty slot" key marker.
|
protected int |
keyMixer
We perturb hash values with a container-unique seed to avoid problems with nearly-sorted-by-hash values on iterations.
|
Object |
keys
The array holding keys.
|
protected double |
loadFactor
The load factor for
keys.
|
protected int |
mask
Mask for slot scans in
keys.
|
protected HashOrderMixingStrategy |
orderMixer
Per-instance hash order mixing strategy.
|
protected int |
resizeAt
|
short[] |
values
The array holding values.
|
| Constructor and Description |
|---|
ObjectShortHashMap()
New instance with sane defaults.
|
ObjectShortHashMap(int expectedElements)
New instance with sane defaults.
|
ObjectShortHashMap(int expectedElements, double loadFactor)
New instance with sane defaults.
|
ObjectShortHashMap(int expectedElements, double loadFactor, HashOrderMixingStrategy
New instance with the provided defaults.
|
ObjectShortHashMap(ObjectShortAssociativeContainer
Create a hash map from all key-value pairs of another container.
|
| Modifier and Type | Method and Description |
|---|---|
short |
addTo(KType key, short incrementValue)
Adds
incrementValue to any existing value for the given
key or inserts
incrementValue if
key did not previously exist.
|
protected void |
allocateBuffers(int arraySize)
Allocate new internal buffers.
|
protected void |
allocateThenInsertThenRehash(int slot, KType pendingKey, short pendingValue)
This method is invoked when there is a new key/ value pair to be inserted into the buffers but there is not enough empty slots to do so.
|
void |
clear()
Clear all keys and values in the container.
|
ObjectShortHashMap |
clone()
|
boolean |
containsKey(KType key)
Returns
true if this container has an association to a value for the given key.
|
void |
ensureCapacity(int expectedElements)
Ensure this container can hold at least the given number of keys (entries) without resizing its buffers.
|
protected boolean |
equalElements(ObjectShortHashMap
Return true if all keys of some other container exist in this container.
|
boolean |
equals(Object
Compares the specified object with this set for equality.
|
protected boolean |
equals(Object
|
<T extends ObjectShortPredicate |
forEach(T predicate)
Applies a given predicate to all keys-value pairs in this container.
|
<T extends ObjectShortProcedure |
forEach(T procedure)
Applies a given procedure to all keys-value pairs in this container.
|
static <KType> ObjectShortHashMap |
from(KType[] keys, short[] values)
Creates a hash map from two index-aligned arrays of key-value pairs.
|
short |
get(KType key)
|
short |
getOrDefault(KType key, short defaultValue)
|
int |
hashCode()
|
protected int |
hashKey(KType key)
Returns a hash code for the given key.
|
boolean |
indexExists(int index)
|
short |
indexGet(int index)
Returns the value associated with an existing key.
|
void |
indexInsert(int index, KType key, short value)
Inserts a key-value pair for a key that is not present in the map.
|
int |
indexOf(KType key)
Returns a logical "index" of a given key that can be used to speed up follow-up value setters or getters in certain scenarios (conditional logic).
|
short |
indexReplace(int index, short newValue)
Replaces the value associated with an existing key and returns any previous value stored for that key.
|
boolean |
isEmpty()
|
Iterator |
iterator()
Returns a cursor over the entries (key-value pairs) in this map.
|
ObjectShortHashMap |
keys()
Returns a specialized view of the keys of this associated container.
|
short |
put(KType key, short value)
Place a given key and value in the container.
|
int |
putAll(Iterable
Puts all key/value pairs from a given iterable into this map.
|
int |
putAll(ObjectShortAssociativeContainer
Puts all keys from another container to this map, replacing the values of existing keys, if such keys are present.
|
boolean |
putIfAbsent(KType key, short value)
Trove-inspired API method.
|
short |
putOrAdd(KType key, short putValue, short incrementValue)
If
key exists,
putValue is inserted into the map, otherwise any existing value is incremented by
additionValue.
|
protected void |
rehash(KType[] fromKeys, short[] fromValues)
Rehash from old buffers to new buffers.
|
void |
release()
Removes all elements from the collection and additionally releases any internal buffers.
|
short |
remove(KType key)
Remove all values at the given key.
|
int |
removeAll(ObjectContainer
Removes all keys (and associated values) present in a given container.
|
int |
removeAll(ObjectPredicate
Removes all keys (and associated values) for which the predicate returns
true.
|
int |
removeAll(ObjectShortPredicate
Removes all keys (and associated values) for which the predicate returns
true.
|
protected void |
shiftConflictingKeys(int gapSlot)
Shift all the slot-conflicting keys and values allocated to (and including)
slot.
|
int |
size()
|
String |
toString()
Convert the contents of this map to a human-friendly string.
|
ShortCollection |
values()
Returns a container view of all values present in this container.
|
protected double |
verifyLoadFactor(double loadFactor)
Validate load factor range and return it.
|
String |
visualizeKeyDistribution(int characters)
Visually depict the distribution of keys.
|
finalize, getClass, notify, notifyAll, wait, wait, waitforEach, spliteratorpublic Object[] keys
public short[] values
protected int keyMixer
hashKey(KType), "http://issues.carrot2.org/browse/HPPC-80", "http://issues.carrot2.org/browse/HPPC-103"
protected int assigned
size() instead).
size()
protected int mask
keys.
protected int resizeAt
protected boolean hasEmptyKey
protected double loadFactor
keys.
protected HashOrderMixingStrategyorderMixer
keyMixer
public ObjectShortHashMap()
public ObjectShortHashMap(int expectedElements)
expectedElements - The expected number of elements guaranteed not to cause buffer expansion (inclusive).
public ObjectShortHashMap(int expectedElements,
double loadFactor)
expectedElements - The expected number of elements guaranteed not to cause buffer expansion (inclusive).
loadFactor - The load factor for internal buffers. Insane load factors (zero, full capacity) are rejected by
verifyLoadFactor(double).
public ObjectShortHashMap(int expectedElements,
double loadFactor,
HashOrderMixingStrategy orderMixer)
expectedElements - The expected number of elements guaranteed not to cause a rehash (inclusive).
loadFactor - The load factor for internal buffers. Insane load factors (zero, full capacity) are rejected by
verifyLoadFactor(double).
orderMixer - Hash key order mixing strategy. See
HashOrderMixing for predefined implementations. Use constant mixers only if you understand the potential consequences.
public ObjectShortHashMap(ObjectShortAssociativeContainer<? extends KType> container)
public short put(KType key, short value)
put in interface
ObjectShortMap<KType>
public int putAll(ObjectShortAssociativeContainer<? extends KType> container)
putAll in interface
ObjectShortMap<KType>
public int putAll(Iterable<? extends ObjectShortCursor <? extends KType>> iterable)
putAll in interface
ObjectShortMap<KType>
public boolean putIfAbsent(KType key, short value)
if (!map.containsKey(key)) map.put(value);
key - The key of the value to check.
value - The value to put if
key does not exist.
true if
key did not exist and
value was placed in the map.
public short putOrAdd(KType key, short putValue, short incrementValue)
key exists,
putValue is inserted into the map, otherwise any existing value is incremented by
additionValue.
putOrAdd in interface
ObjectShortMap<KType>
key - The key of the value to adjust.
putValue - The value to put if
key does not exist.
incrementValue - The value to add to the existing value if
key exists.
key (after changes).
public short addTo(KType key, short incrementValue)
incrementValue to any existing value for the given
key or inserts
incrementValue if
key did not previously exist.
addTo in interface
ObjectShortMap<KType>
key - The key of the value to adjust.
incrementValue - The value to put or add to the existing value if
key exists.
key (after changes).
public short remove(KType key)
public int removeAll(ObjectContainer<? super KType> other)
keys().removeAll(container)but with no additional overhead.
removeAll in interface
ObjectShortAssociativeContainer<KType>
public int removeAll(ObjectShortPredicate<? super KType> predicate)
true.
removeAll in interface
ObjectShortAssociativeContainer<KType>
public int removeAll(ObjectPredicate<? super KType> predicate)
true.
removeAll in interface
ObjectShortAssociativeContainer<KType>
public short get(KType key)
get in interface
ObjectShortMap<KType>
public short getOrDefault(KType key, short defaultValue)
getOrDefault in interface
ObjectShortMap<KType>
public boolean containsKey(KType key)
true if this container has an association to a value for the given key.
public int indexOf(KType key)
indexOf in interface
ObjectShortMap<KType>
key - The key to locate in the map.
ObjectShortMap.indexExists(int) ,
ObjectShortMap.indexGet(int) ,
ObjectShortMap.indexInsert(int, KType, short) ,
ObjectShortMap.indexReplace(int, short)
public boolean indexExists(int index)
indexExists in interface
ObjectShortMap<KType>
index - The index of a given key, as returned from
ObjectShortMap.indexOf(KType) .
true if the index corresponds to an existing key or false otherwise. This is equivalent to checking whether the index is a positive value (existing keys) or a negative value (non-existing keys).
ObjectShortMap.indexOf(KType)
public short indexGet(int index)
indexGet in interface
ObjectShortMap<KType>
index - The index of an existing key.
ObjectShortMap.indexOf(KType)
public short indexReplace(int index,
short newValue)
indexReplace in interface
ObjectShortMap<KType>
index - The index of an existing key.
ObjectShortMap.indexOf(KType)
public void indexInsert(int index,
KType key,
short value)
indexInsert in interface
ObjectShortMap<KType>
index - The index of a previously non-existing key, as returned from
ObjectShortMap.indexOf(KType) .
ObjectShortMap.indexOf(KType)
public void clear()
clear in interface
ObjectShortMap<KType>
ObjectShortMap.release()
public void release()
ObjectShortMap.clear() should be a better alternative since it'll avoid reallocation.
release in interface
ObjectShortMap<KType>
ObjectShortMap.clear()
public int size()
size in interface
ObjectShortAssociativeContainer<KType>
public boolean isEmpty()
isEmpty in interface
ObjectShortAssociativeContainer<KType>
true if this hash map contains no assigned keys.
public int hashCode()
hashCode in interface
ObjectShortMap<KType>
hashCode in class
Object
public boolean equals(Objectobj)
ObjectShortMap and both objects contains exactly the same key-value pairs.
protected boolean equalElements(ObjectShortHashMap<?> other)
equals(Object, Object) method.
public void ensureCapacity(int expectedElements)
ensureCapacity in interface
Preallocable
expectedElements - The total number of keys, inclusive.
public Iterator<ObjectShortCursor <KType>> iterator()
Iterator.next() . To read the current key and value use the cursor's public fields. An example is shown below.
for (IntShortCursor c : intShortMap) {
System.out.println("index=" + c.index + " key=" + c.key + " value=" + c.value);
}
The index field inside the cursor gives the internal index inside the container's implementation. The interpretation of this index depends on to the container.
public <T extends ObjectShortProcedure<? super KType>> T forEach(T procedure)
ObjectShortProcedure. This lets the caller to call methods of the argument by chaining the call (even if the argument is an anonymous type) to retrieve computed values, for example.
public <T extends ObjectShortPredicate<? super KType>> T forEach(T predicate)
ObjectShortPredicate. This lets the caller to call methods of the argument by chaining the call (even if the argument is an anonymous type) to retrieve computed values, for example. The iteration is continued as long as the predicate returns
true.
public ObjectShortHashMap.KeysContainer keys()
ObjectLookupContainer.
public ShortCollectionvalues()
ObjectShortAssociativeContainer
values in interface
ObjectShortAssociativeContainer<KType>
public ObjectShortHashMap<KType> clone()
public StringtoString()
public StringvisualizeKeyDistribution(int characters)
ObjectShortMap
visualizeKeyDistribution in interface
ObjectShortMap<KType>
characters - The number of characters to "squeeze" the entire buffer into.
public static <KType> ObjectShortHashMap<KType> from(KType[] keys, short[] values)
protected int hashKey(KType key)
The default implementation mixes the hash of the key with keyMixer to differentiate hash order of keys between hash containers. Helps alleviate problems resulting from linear conflict resolution in open addressing.
The output from this function should evenly distribute keys across the entire integer range.
protected double verifyLoadFactor(double loadFactor)
protected void rehash(KType[] fromKeys, short[] fromValues)
protected void allocateBuffers(int arraySize)
protected void allocateThenInsertThenRehash(int slot,
KType pendingKey,
short pendingValue)
protected void shiftConflictingKeys(int gapSlot)
slot.