public class ArrayMap<K,V> extends AbstractMap<K,V> implements Cloneable
Memory-efficient map of keys to values with list-style random-access semantics.
Supports null keys and values. Conceptually, the keys and values are stored in a simpler array
in order to minimize memory use and provide for fast access to a key/value at a certain index
(for example #getKey(int)). However, traditional mapping operations like #get(Object) and #put(Object, Object) are slower because they need to look up all
key/value pairs in the worst case.
Implementation is not thread-safe. For a thread-safe choice instead use an implementation of
ConcurrentMap.
Type Parameters
Static Methods
<K,V>create()
public static ArrayMap<K,V> <K,V>create()
Returns a new instance of an array map with initial capacity of zero. Equivalent to calling the
default constructor, except without the need to specify the type parameters. For example:
ArrayMap<String, String> map = ArrayMap.create();
.
Returns
<K,V>create(int initialCapacity)
public static ArrayMap<K,V> <K,V>create(int initialCapacity)
Returns a new instance of an array map of the given initial capacity. For example:
ArrayMap<String, String> map = ArrayMap.create(8);
.
Parameter
Name | Description |
initialCapacity | int
|
Returns
<K,V>of(Object[] keyValuePairs)
public static ArrayMap<K,V> <K,V>of(Object[] keyValuePairs)
Returns a new instance of an array map of the given key value pairs in alternating order. For
example: ArrayMap<String, String> map = ArrayMap.of("key1", "value1", "key2", "value2",
...);
.
WARNING: there is no compile-time checking of the keyValuePairs
parameter to ensure
that the keys or values have the correct type, so if the wrong type is passed in, any problems
will occur at runtime. Also, there is no checking that the keys are unique, which the caller
must ensure is true.
Parameter
Name | Description |
keyValuePairs | Object[]
|
Returns
Constructors
ArrayMap()
Methods
add(K key, V value)
public final void add(K key, V value)
Adds the key/value mapping at the end of the list. Behaves identically to set(size(),
key, value)
.
Parameters
Name | Description |
key | K
|
value | V
|
clear()
Overrides
clone()
public ArrayMap<K,V> clone()
Returns
Overrides
containsKey(Object key)
public final boolean containsKey(Object key)
Returns whether there is a mapping for the given key.
Parameter
Returns
Overrides
containsValue(Object value)
public final boolean containsValue(Object value)
Parameter
Returns
Overrides
ensureCapacity(int minCapacity)
public final void ensureCapacity(int minCapacity)
Ensures that the capacity of the internal arrays is at least a given capacity.
Parameter
Name | Description |
minCapacity | int
|
entrySet()
public final Set<Map.Entry<K,V>> entrySet()
Returns
Overrides
get(Object key)
public final V get(Object key)
Returns the value set for the given key or null
if there is no such mapping or if the
mapping value is null
.
Parameter
Returns
Overrides
getIndexOfKey(K key)
public final int getIndexOfKey(K key)
Returns the index of the given key or -1
if there is no such key.
Parameter
Returns
getKey(int index)
public final K getKey(int index)
Returns the key at the given index or null
if out of bounds.
Parameter
Returns
getValue(int index)
public final V getValue(int index)
Returns the value at the given index or null
if out of bounds.
Parameter
Returns
put(K key, V value)
public final V put(K key, V value)
Sets the value for the given key, overriding any existing value.
Parameters
Name | Description |
key | K
|
value | V
|
Returns
Type | Description |
V | previous value or null for none
|
Overrides
remove(int index)
public final V remove(int index)
Removes the key/value mapping at the given index, or ignored if the index is out of bounds.
Parameter
Returns
Type | Description |
V | previous value or null for none
|
remove(Object key)
public final V remove(Object key)
Removes the key-value pair of the given key, or ignore if the key cannot be found.
Parameter
Returns
Type | Description |
V | previous value or null for none
|
Overrides
set(int index, K key, V value)
public final V set(int index, K key, V value)
Sets the key/value mapping at the given index, overriding any existing key/value mapping.
There is no checking done to ensure that the key does not already exist. Therefore, this
method is dangerous to call unless the caller can be certain the key does not already exist in
the map.
Parameters
Name | Description |
index | int
|
key | K
|
value | V
|
Returns
Type | Description |
V | previous value or null for none
|
set(int index, V value)
public final V set(int index, V value)
Sets the value at the given index, overriding any existing value mapping.
Parameters
Name | Description |
index | int
|
value | V
|
Returns
Type | Description |
V | previous value or null for none
|
size()
Returns the number of key-value pairs set.
Returns
Overrides
trim()
Trims the internal array storage to minimize memory usage.