V
- The value type stored in the map.public class ShortObjectHashMap<V> extends java.lang.Object implements ShortObjectMap<V>
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.Modifier and Type | Class and Description |
---|---|
private class |
ShortObjectHashMap.EntrySet
Set implementation for iterating over the entries of the map.
|
private class |
ShortObjectHashMap.KeySet
Set implementation for iterating over the keys.
|
(package private) class |
ShortObjectHashMap.MapEntry
A single entry in the map.
|
private class |
ShortObjectHashMap.MapIterator
Iterator used by the
Map interface. |
private class |
ShortObjectHashMap.PrimitiveIterator
Iterator over primitive entries.
|
ShortObjectMap.PrimitiveEntry<V>
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_CAPACITY
Default initial capacity.
|
static float |
DEFAULT_LOAD_FACTOR
Default load factor.
|
private java.lang.Iterable<ShortObjectMap.PrimitiveEntry<V>> |
entries |
private java.util.Set<java.util.Map.Entry<java.lang.Short,V>> |
entrySet |
private short[] |
keys |
private java.util.Set<java.lang.Short> |
keySet |
private float |
loadFactor
The load factor for the map.
|
private int |
mask |
private int |
maxSize
The maximum number of elements allowed without allocating more space.
|
private static java.lang.Object |
NULL_VALUE
Placeholder for null values, so we can use the actual null to mean available.
|
private int |
size |
private V[] |
values |
Constructor and Description |
---|
ShortObjectHashMap() |
ShortObjectHashMap(int initialCapacity) |
ShortObjectHashMap(int initialCapacity,
float loadFactor) |
Modifier and Type | Method and Description |
---|---|
private int |
calcMaxSize(int capacity)
Calculates the maximum size allowed before rehashing.
|
void |
clear() |
boolean |
containsKey(java.lang.Object key) |
boolean |
containsKey(short key)
Indicates whether or not this map contains a value for the specified key.
|
boolean |
containsValue(java.lang.Object value) |
java.lang.Iterable<ShortObjectMap.PrimitiveEntry<V>> |
entries()
Gets an iterable to traverse over the primitive entries contained in this map.
|
java.util.Set<java.util.Map.Entry<java.lang.Short,V>> |
entrySet() |
boolean |
equals(java.lang.Object obj) |
V |
get(java.lang.Object key) |
V |
get(short key)
Gets the value in the map with the specified key.
|
private void |
growSize()
Grows the map size after an insertion.
|
int |
hashCode() |
private static int |
hashCode(short key)
Returns the hash code for the key.
|
private int |
hashIndex(short key)
Returns the hashed index for the given key.
|
private int |
indexOf(short key)
Locates the index for the given key.
|
boolean |
isEmpty() |
java.util.Set<java.lang.Short> |
keySet() |
protected java.lang.String |
keyToString(short key)
Helper method called by
toString() in order to convert a single map key into a string. |
private short |
objectToKey(java.lang.Object key) |
private int |
probeNext(int index)
Get the next sequential index after
index and wraps if necessary. |
V |
put(short key,
V value)
Puts the given entry into the map.
|
V |
put(java.lang.Short key,
V value) |
void |
putAll(java.util.Map<? extends java.lang.Short,? extends V> sourceMap) |
private void |
rehash(int newCapacity)
Rehashes the map for the given capacity.
|
V |
remove(java.lang.Object key) |
V |
remove(short key)
Removes the entry with the specified key.
|
private boolean |
removeAt(int index)
Removes entry at the given index position.
|
int |
size() |
private static <T> T |
toExternal(T value) |
private static <T> T |
toInternal(T value) |
java.lang.String |
toString() |
java.util.Collection<V> |
values() |
public static final int DEFAULT_CAPACITY
public static final float DEFAULT_LOAD_FACTOR
private static final java.lang.Object NULL_VALUE
private int maxSize
private final float loadFactor
maxSize
.private short[] keys
private V[] values
private int size
private int mask
private final java.util.Set<java.lang.Short> keySet
private final java.util.Set<java.util.Map.Entry<java.lang.Short,V>> entrySet
private final java.lang.Iterable<ShortObjectMap.PrimitiveEntry<V>> entries
public ShortObjectHashMap()
public ShortObjectHashMap(int initialCapacity)
public ShortObjectHashMap(int initialCapacity, float loadFactor)
private static <T> T toExternal(T value)
private static <T> T toInternal(T value)
public V get(short key)
ShortObjectMap
get
in interface ShortObjectMap<V>
key
- the key whose associated value is to be returned.null
if the key was not found in the map.public V put(short key, V value)
ShortObjectMap
put
in interface ShortObjectMap<V>
key
- the key of the entry.value
- the value of the entry.null
if there was no previous mapping.public void putAll(java.util.Map<? extends java.lang.Short,? extends V> sourceMap)
putAll
in interface java.util.Map<java.lang.Short,V>
public V remove(short key)
ShortObjectMap
remove
in interface ShortObjectMap<V>
key
- the key for the entry to be removed from this map.null
if there was no mapping.public int size()
size
in interface java.util.Map<java.lang.Short,V>
public boolean isEmpty()
isEmpty
in interface java.util.Map<java.lang.Short,V>
public void clear()
clear
in interface java.util.Map<java.lang.Short,V>
public boolean containsKey(short key)
ShortObjectMap
containsKey
in interface ShortObjectMap<V>
public boolean containsValue(java.lang.Object value)
containsValue
in interface java.util.Map<java.lang.Short,V>
public java.lang.Iterable<ShortObjectMap.PrimitiveEntry<V>> entries()
ShortObjectMap
ShortObjectMap.PrimitiveEntry
s returned by the Iterator
may change as the Iterator
progresses. The caller should not rely on ShortObjectMap.PrimitiveEntry
key/value stability.entries
in interface ShortObjectMap<V>
public java.util.Collection<V> values()
values
in interface java.util.Map<java.lang.Short,V>
public int hashCode()
hashCode
in interface java.util.Map<java.lang.Short,V>
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object obj)
equals
in interface java.util.Map<java.lang.Short,V>
equals
in class java.lang.Object
public boolean containsKey(java.lang.Object key)
containsKey
in interface java.util.Map<java.lang.Short,V>
public V get(java.lang.Object key)
get
in interface java.util.Map<java.lang.Short,V>
public V put(java.lang.Short key, V value)
put
in interface java.util.Map<java.lang.Short,V>
public V remove(java.lang.Object key)
remove
in interface java.util.Map<java.lang.Short,V>
public java.util.Set<java.lang.Short> keySet()
keySet
in interface java.util.Map<java.lang.Short,V>
public java.util.Set<java.util.Map.Entry<java.lang.Short,V>> entrySet()
entrySet
in interface java.util.Map<java.lang.Short,V>
private short objectToKey(java.lang.Object key)
private int indexOf(short key)
key
- the key for an entry in the map.-1
if no entry is found for that key.private int hashIndex(short key)
private static int hashCode(short key)
private int probeNext(int index)
index
and wraps if necessary.private void growSize()
private boolean removeAt(int index)
index
- the index position of the element to remove.true
if the next item was moved back. false
otherwise.private int calcMaxSize(int capacity)
private void rehash(int newCapacity)
newCapacity
- the new capacity for the map.public java.lang.String toString()
toString
in class java.lang.Object
protected java.lang.String keyToString(short key)
toString()
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.