IntByteAssociativeContainer, IntByteMap, Preallocable, java.lang.Cloneable, java.lang.Iterable<IntByteCursor>IntByteScatterMap@Generated(date="2018-05-21T12:24:06+0200", value="KTypeVTypeHashMap.java") public class IntByteHashMap extends java.lang.Object implements IntByteMap, Preallocable, java.lang.Cloneable
int to byte, implemented using open
addressing with linear probing for collision resolution.
Note: read about important differences between hash and scatter sets.
IntByteScatterMap,
HPPC interfaces diagram| Modifier and Type | Class | Description |
|---|---|---|
class |
IntByteHashMap.KeysContainer |
A view of the keys inside this hash map.
|
| Modifier and Type | Field | 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.
|
int[] |
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 |
|
byte[] |
values |
The array holding values.
|
| Constructor | Description |
|---|---|
IntByteHashMap() |
New instance with sane defaults.
|
IntByteHashMap(int expectedElements) |
New instance with sane defaults.
|
IntByteHashMap(int expectedElements,
double loadFactor) |
New instance with sane defaults.
|
IntByteHashMap(int expectedElements,
double loadFactor,
HashOrderMixingStrategy orderMixer) |
New instance with the provided defaults.
|
IntByteHashMap(IntByteAssociativeContainer container) |
Create a hash map from all key-value pairs of another container.
|
| Modifier and Type | Method | Description |
|---|---|---|
byte |
addTo(int key,
byte 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,
int pendingKey,
byte 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.
|
IntByteHashMap |
clone() |
|
boolean |
containsKey(int 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(IntByteHashMap other) |
Return true if all keys of some other container exist in this container.
|
boolean |
equals(java.lang.Object obj) |
Compares the specified object with this set for equality.
|
<T extends IntByteProcedure> |
forEach(T procedure) |
Applies a given procedure to all keys-value pairs in this container.
|
static IntByteHashMap |
from(int[] keys,
byte[] values) |
Creates a hash map from two index-aligned arrays of key-value pairs.
|
byte |
get(int key) |
|
byte |
getOrDefault(int key,
byte defaultValue) |
|
int |
hashCode() |
|
protected int |
hashKey(int key) |
Returns a hash code for the given key.
|
boolean |
indexExists(int index) |
|
byte |
indexGet(int index) |
Returns the value associated with an existing key.
|
void |
indexInsert(int index,
int key,
byte value) |
Inserts a key-value pair for a key that is not present in the map.
|
int |
indexOf(int 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).
|
byte |
indexReplace(int index,
byte newValue) |
Replaces the value associated with an existing key and returns any previous
value stored for that key.
|
boolean |
isEmpty() |
|
java.util.Iterator<IntByteCursor> |
iterator() |
Returns a cursor over the entries (key-value pairs) in this map.
|
IntByteHashMap.KeysContainer |
keys() |
Returns a specialized view of the keys of this associated container.
|
byte |
put(int key,
byte value) |
Place a given key and value in the container.
|
int |
putAll(IntByteAssociativeContainer container) |
Puts all keys from another container to this map, replacing the values of
existing keys, if such keys are present.
|
int |
putAll(java.lang.Iterable<? extends IntByteCursor> iterable) |
Puts all key/value pairs from a given iterable into this map.
|
boolean |
putIfAbsent(int key,
byte value) |
Trove-inspired API method.
|
byte |
putOrAdd(int key,
byte putValue,
byte incrementValue) |
If
key exists, putValue is inserted into the map,
otherwise any existing value is incremented by additionValue. |
protected void |
rehash(int[] fromKeys,
byte[] fromValues) |
Rehash from old buffers to new buffers.
|
void |
release() |
Removes all elements from the collection and additionally releases any
internal buffers.
|
byte |
remove(int key) |
Remove all values at the given key.
|
int |
removeAll(IntContainer other) |
Removes all keys (and associated values) present in a given container.
|
int |
removeAll(IntBytePredicate predicate) |
Removes all keys (and associated values) for which the predicate returns
true. |
int |
removeAll(IntPredicate predicate) |
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() |
|
java.lang.String |
toString() |
Convert the contents of this map to a human-friendly string.
|
ByteCollection |
values() |
Returns a container view of all values present in this container.
|
protected double |
verifyLoadFactor(double loadFactor) |
Validate load factor range and return it.
|
java.lang.String |
visualizeKeyDistribution(int characters) |
Visually depict the distribution of keys.
|
public int[] keys
public byte[] values
protected int keyMixer
hashKey(int),
"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 HashOrderMixingStrategy orderMixer
keyMixerpublic IntByteHashMap()
public IntByteHashMap(int expectedElements)
expectedElements - The expected number of elements guaranteed not to cause buffer
expansion (inclusive).public IntByteHashMap(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 IntByteHashMap(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 IntByteHashMap(IntByteAssociativeContainer container)
public byte put(int key,
byte value)
put in interface IntByteMappublic int putAll(IntByteAssociativeContainer container)
putAll in interface IntByteMappublic int putAll(java.lang.Iterable<? extends IntByteCursor> iterable)
putAll in interface IntByteMappublic boolean putIfAbsent(int key,
byte 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 byte putOrAdd(int key,
byte putValue,
byte incrementValue)
key exists, putValue is inserted into the map,
otherwise any existing value is incremented by additionValue.putOrAdd in interface IntByteMapkey - 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 byte addTo(int key,
byte incrementValue)
incrementValue to any existing value for the given key
or inserts incrementValue if key did not previously exist.addTo in interface IntByteMapkey - 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 byte remove(int key)
remove in interface IntByteMappublic int removeAll(IntContainer other)
keys().removeAll(container)but with no additional overhead.
removeAll in interface IntByteAssociativeContainerpublic int removeAll(IntBytePredicate predicate)
true.removeAll in interface IntByteAssociativeContainerpublic int removeAll(IntPredicate predicate)
true.removeAll in interface IntByteAssociativeContainerpublic byte get(int key)
get in interface IntByteMapnull.public byte getOrDefault(int key,
byte defaultValue)
getOrDefault in interface IntByteMappublic boolean containsKey(int key)
true if this container has an association to a value
for the given key.containsKey in interface IntByteAssociativeContainerpublic int indexOf(int key)
indexOf in interface IntByteMapkey - The key to locate in the map.IntByteMap.indexExists(int),
IntByteMap.indexGet(int),
IntByteMap.indexInsert(int, int, byte),
IntByteMap.indexReplace(int, byte)public boolean indexExists(int index)
indexExists in interface IntByteMapindex - The index of a given key, as returned from IntByteMap.indexOf(int).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).IntByteMap.indexOf(int)public byte indexGet(int index)
indexGet in interface IntByteMapindex - The index of an existing key.IntByteMap.indexOf(int)public byte indexReplace(int index,
byte newValue)
indexReplace in interface IntByteMapindex - The index of an existing key.IntByteMap.indexOf(int)public void indexInsert(int index,
int key,
byte value)
indexInsert in interface IntByteMapindex - The index of a previously non-existing key, as returned from
IntByteMap.indexOf(int).IntByteMap.indexOf(int)public void clear()
clear in interface IntByteMapIntByteMap.release()public void release()
IntByteMap.clear() should be a better alternative since it'll avoid
reallocation.release in interface IntByteMapIntByteMap.clear()public int size()
size in interface IntByteAssociativeContainerpublic boolean isEmpty()
isEmpty in interface IntByteAssociativeContainertrue if this hash map contains no assigned
keys.public int hashCode()
hashCode in interface IntByteMaphashCode in class java.lang.Objectpublic boolean equals(java.lang.Object obj)
IntByteMap and both objects contains exactly the same key-value
pairs.equals in interface IntByteMapequals in class java.lang.Objectprotected boolean equalElements(IntByteHashMap other)
public void ensureCapacity(int expectedElements)
ensureCapacity in interface PreallocableexpectedElements - The total number of keys, inclusive.public java.util.Iterator<IntByteCursor> 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.
iterator in interface IntByteAssociativeContaineriterator in interface java.lang.Iterable<IntByteCursor>public <T extends IntByteProcedure> T forEach(T procedure)
IntByteProcedure. 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.forEach in interface IntByteAssociativeContainerpublic <T extends IntBytePredicate> T forEach(T predicate)
IntBytePredicate. 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.forEach in interface IntByteAssociativeContainerpublic IntByteHashMap.KeysContainer keys()
ObjectLookupContainer.keys in interface IntByteAssociativeContainerpublic ByteCollection values()
IntByteAssociativeContainervalues in interface IntByteAssociativeContainerpublic IntByteHashMap clone()
clone in class java.lang.Objectpublic java.lang.String toString()
toString in class java.lang.Objectpublic java.lang.String visualizeKeyDistribution(int characters)
IntByteMapvisualizeKeyDistribution in interface IntByteMapcharacters - The number of characters to "squeeze" the entire buffer into.public static IntByteHashMap from(int[] keys, byte[] values)
protected int hashKey(int 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(int[] fromKeys,
byte[] fromValues)
protected void allocateBuffers(int arraySize)
protected void allocateThenInsertThenRehash(int slot,
int pendingKey,
byte pendingValue)
protected void shiftConflictingKeys(int gapSlot)
slot.Copyright © 2018 Carrot Search s.c.. All Rights Reserved.