Class ShortObjectHashMap<V>
java.lang.Object
io.netty.util.collection.ShortObjectHashMap<V>
- Type Parameters:
V- The value type stored in the map.
- All Implemented Interfaces:
ShortObjectMap<V>, Map<Short,V>
A hash map implementation of
ShortObjectMap that uses open addressing for keys.
To minimize the memory footprint, this class uses open addressing rather than chaining.
Collisions are resolved using linear probing. Deletions implement compaction, so cost of
remove can approach O(N) for full maps, which makes a small loadFactor recommended.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final classSet implementation for iterating over the entries of the map.private final classSet implementation for iterating over the keys.(package private) final classA single entry in the map.private final classIterator used by theMapinterface.private final classIterator over primitive entries.Nested classes/interfaces inherited from interface ShortObjectMap
ShortObjectMap.PrimitiveEntry<V> -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intDefault initial capacity.static final floatDefault load factor.private final Iterable<ShortObjectMap.PrimitiveEntry<V>> private short[]private final floatThe load factor for the map.private intprivate intThe maximum number of elements allowed without allocating more space.private static final ObjectPlaceholder for null values, so we can use the actual null to mean available.private intprivate V[] -
Constructor Summary
ConstructorsConstructorDescriptionShortObjectHashMap(int initialCapacity) ShortObjectHashMap(int initialCapacity, float loadFactor) -
Method Summary
Modifier and TypeMethodDescriptionprivate intcalcMaxSize(int capacity) Calculates the maximum size allowed before rehashing.voidclear()booleancontainsKey(short key) Indicates whether or not this map contains a value for the specified key.booleancontainsKey(Object key) booleancontainsValue(Object value) entries()Gets an iterable to traverse over the primitive entries contained in this map.entrySet()booleanget(short key) Gets the value in the map with the specified key.private voidgrowSize()Grows the map size after an insertion.inthashCode()private static inthashCode(short key) Returns the hash code for the key.private inthashIndex(short key) Returns the hashed index for the given key.private intindexOf(short key) Locates the index for the given key.booleanisEmpty()keySet()protected StringkeyToString(short key) Helper method called bytoString()in order to convert a single map key into a string.private shortobjectToKey(Object key) private intprobeNext(int index) Get the next sequential index afterindexand wraps if necessary.Puts the given entry into the map.voidprivate voidrehash(int newCapacity) Rehashes the map for the given capacity.remove(short key) Removes the entry with the specified key.private booleanremoveAt(int index) Removes entry at the given index position.intsize()private static <T> TtoExternal(T value) private static <T> TtoInternal(T value) toString()values()Methods inherited from interface Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Field Details
-
DEFAULT_CAPACITY
public static final int DEFAULT_CAPACITYDefault initial capacity. Used if not specified in the constructor- See Also:
-
DEFAULT_LOAD_FACTOR
public static final float DEFAULT_LOAD_FACTORDefault load factor. Used if not specified in the constructor- See Also:
-
NULL_VALUE
Placeholder for null values, so we can use the actual null to mean available. (Better than using a placeholder for available: less references for GC processing.) -
maxSize
private int maxSizeThe maximum number of elements allowed without allocating more space. -
loadFactor
private final float loadFactorThe load factor for the map. Used to calculatemaxSize. -
keys
private short[] keys -
values
-
size
private int size -
mask
private int mask -
keySet
-
entrySet
-
entries
-
-
Constructor Details
-
ShortObjectHashMap
public ShortObjectHashMap() -
ShortObjectHashMap
public ShortObjectHashMap(int initialCapacity) -
ShortObjectHashMap
public ShortObjectHashMap(int initialCapacity, float loadFactor)
-
-
Method Details
-
toExternal
private static <T> T toExternal(T value) -
toInternal
private static <T> T toInternal(T value) -
get
Description copied from interface:ShortObjectMapGets the value in the map with the specified key.- Specified by:
getin interfaceShortObjectMap<V>- Parameters:
key- the key whose associated value is to be returned.- Returns:
- the value or
nullif the key was not found in the map.
-
put
Description copied from interface:ShortObjectMapPuts the given entry into the map.- Specified by:
putin interfaceShortObjectMap<V>- Parameters:
key- the key of the entry.value- the value of the entry.- Returns:
- the previous value for this key or
nullif there was no previous mapping.
-
putAll
-
remove
Description copied from interface:ShortObjectMapRemoves the entry with the specified key.- Specified by:
removein interfaceShortObjectMap<V>- Parameters:
key- the key for the entry to be removed from this map.- Returns:
- the previous value for the key, or
nullif there was no mapping.
-
size
-
isEmpty
-
clear
-
containsKey
public boolean containsKey(short key) Description copied from interface:ShortObjectMapIndicates whether or not this map contains a value for the specified key.- Specified by:
containsKeyin interfaceShortObjectMap<V>
-
containsValue
- Specified by:
containsValuein interfaceMap<Short,V>
-
entries
Description copied from interface:ShortObjectMapGets an iterable to traverse over the primitive entries contained in this map. As an optimization, theShortObjectMap.PrimitiveEntrys returned by themay change as theinvalid reference
Iteratorprogresses. The caller should not rely oninvalid reference
IteratorShortObjectMap.PrimitiveEntrykey/value stability.- Specified by:
entriesin interfaceShortObjectMap<V>
-
values
-
hashCode
-
equals
-
containsKey
- Specified by:
containsKeyin interfaceMap<Short,V>
-
get
-
put
-
remove
-
keySet
-
entrySet
-
objectToKey
-
indexOf
private int indexOf(short key) Locates the index for the given key. This method probes using double hashing.- Parameters:
key- the key for an entry in the map.- Returns:
- the index where the key was found, or
-1if no entry is found for that key.
-
hashIndex
private int hashIndex(short key) Returns the hashed index for the given key. -
hashCode
private static int hashCode(short key) Returns the hash code for the key. -
probeNext
private int probeNext(int index) Get the next sequential index afterindexand wraps if necessary. -
growSize
private void growSize()Grows the map size after an insertion. If necessary, performs a rehash of the map. -
removeAt
private boolean removeAt(int index) Removes entry at the given index position. Also performs opportunistic, incremental rehashing if necessary to not break conflict chains.- Parameters:
index- the index position of the element to remove.- Returns:
trueif the next item was moved back.falseotherwise.
-
calcMaxSize
private int calcMaxSize(int capacity) Calculates the maximum size allowed before rehashing. -
rehash
private void rehash(int newCapacity) Rehashes the map for the given capacity.- Parameters:
newCapacity- the new capacity for the map.
-
toString
-
keyToString
Helper method called bytoString()in order to convert a single map key into a string. This is protected to allow subclasses to override the appearance of a given key.
-