V - The value type stored in the map.public class ByteObjectHashMap<V> extends java.lang.Object implements ByteObjectMap<V>
ByteObjectMap 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 |
ByteObjectHashMap.EntrySet
Set implementation for iterating over the entries of the map.
|
private class |
ByteObjectHashMap.KeySet
Set implementation for iterating over the keys.
|
(package private) class |
ByteObjectHashMap.MapEntry
A single entry in the map.
|
private class |
ByteObjectHashMap.MapIterator
Iterator used by the
Map interface. |
private class |
ByteObjectHashMap.PrimitiveIterator
Iterator over primitive entries.
|
ByteObjectMap.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<ByteObjectMap.PrimitiveEntry<V>> |
entries |
private java.util.Set<java.util.Map.Entry<java.lang.Byte,V>> |
entrySet |
private byte[] |
keys |
private java.util.Set<java.lang.Byte> |
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 |
|---|
ByteObjectHashMap() |
ByteObjectHashMap(int initialCapacity) |
ByteObjectHashMap(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(byte key)
Indicates whether or not this map contains a value for the specified key.
|
boolean |
containsKey(java.lang.Object key) |
boolean |
containsValue(java.lang.Object value) |
java.lang.Iterable<ByteObjectMap.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.Byte,V>> |
entrySet() |
boolean |
equals(java.lang.Object obj) |
V |
get(byte key)
Gets the value in the map with the specified key.
|
V |
get(java.lang.Object key) |
private void |
growSize()
Grows the map size after an insertion.
|
int |
hashCode() |
private static int |
hashCode(byte key)
Returns the hash code for the key.
|
private int |
hashIndex(byte key)
Returns the hashed index for the given key.
|
private int |
indexOf(byte key)
Locates the index for the given key.
|
boolean |
isEmpty() |
java.util.Set<java.lang.Byte> |
keySet() |
protected java.lang.String |
keyToString(byte key)
Helper method called by
toString() in order to convert a single map key into a string. |
private byte |
objectToKey(java.lang.Object key) |
private int |
probeNext(int index)
Get the next sequential index after
index and wraps if necessary. |
V |
put(byte key,
V value)
Puts the given entry into the map.
|
V |
put(java.lang.Byte key,
V value) |
void |
putAll(java.util.Map<? extends java.lang.Byte,? extends V> sourceMap) |
private void |
rehash(int newCapacity)
Rehashes the map for the given capacity.
|
V |
remove(byte key)
Removes the entry with the specified key.
|
V |
remove(java.lang.Object 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 byte[] keys
private V[] values
private int size
private int mask
private final java.util.Set<java.lang.Byte> keySet
private final java.util.Set<java.util.Map.Entry<java.lang.Byte,V>> entrySet
private final java.lang.Iterable<ByteObjectMap.PrimitiveEntry<V>> entries
public ByteObjectHashMap()
public ByteObjectHashMap(int initialCapacity)
public ByteObjectHashMap(int initialCapacity,
float loadFactor)
private static <T> T toExternal(T value)
private static <T> T toInternal(T value)
public V get(byte key)
ByteObjectMapget in interface ByteObjectMap<V>key - the key whose associated value is to be returned.null if the key was not found in the map.public V put(byte key, V value)
ByteObjectMapput in interface ByteObjectMap<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.Byte,? extends V> sourceMap)
putAll in interface java.util.Map<java.lang.Byte,V>public V remove(byte key)
ByteObjectMapremove in interface ByteObjectMap<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.Byte,V>public boolean isEmpty()
isEmpty in interface java.util.Map<java.lang.Byte,V>public void clear()
clear in interface java.util.Map<java.lang.Byte,V>public boolean containsKey(byte key)
ByteObjectMapcontainsKey in interface ByteObjectMap<V>public boolean containsValue(java.lang.Object value)
containsValue in interface java.util.Map<java.lang.Byte,V>public java.lang.Iterable<ByteObjectMap.PrimitiveEntry<V>> entries()
ByteObjectMapByteObjectMap.PrimitiveEntrys returned by the Iterator may change as the Iterator
progresses. The caller should not rely on ByteObjectMap.PrimitiveEntry key/value stability.entries in interface ByteObjectMap<V>public java.util.Collection<V> values()
values in interface java.util.Map<java.lang.Byte,V>public int hashCode()
hashCode in interface java.util.Map<java.lang.Byte,V>hashCode in class java.lang.Objectpublic boolean equals(java.lang.Object obj)
equals in interface java.util.Map<java.lang.Byte,V>equals in class java.lang.Objectpublic boolean containsKey(java.lang.Object key)
containsKey in interface java.util.Map<java.lang.Byte,V>public V get(java.lang.Object key)
get in interface java.util.Map<java.lang.Byte,V>public V put(java.lang.Byte key, V value)
put in interface java.util.Map<java.lang.Byte,V>public V remove(java.lang.Object key)
remove in interface java.util.Map<java.lang.Byte,V>public java.util.Set<java.lang.Byte> keySet()
keySet in interface java.util.Map<java.lang.Byte,V>public java.util.Set<java.util.Map.Entry<java.lang.Byte,V>> entrySet()
entrySet in interface java.util.Map<java.lang.Byte,V>private byte objectToKey(java.lang.Object key)
private int indexOf(byte key)
key - the key for an entry in the map.-1 if no entry is found for that key.private int hashIndex(byte key)
private static int hashCode(byte 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.Objectprotected java.lang.String keyToString(byte 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.