Class ArrayMap<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- com.google.api.client.util.ArrayMap<K,V>
-
- Type Parameters:
K
- the type of keys maintained by this mapV
- the type of mapped values
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 likeget(Object)
andput(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
.- Since:
- 1.0
- Author:
- Yaniv Inbar
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Constructor Summary
Constructors Constructor Description ArrayMap()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(K key, V value)
Adds the key/value mapping at the end of the list.void
clear()
ArrayMap<K,V>
clone()
boolean
containsKey(Object key)
Returns whether there is a mapping for the given key.boolean
containsValue(Object value)
static <K,V>
ArrayMap<K,V>create()
Returns a new instance of an array map with initial capacity of zero.static <K,V>
ArrayMap<K,V>create(int initialCapacity)
Returns a new instance of an array map of the given initial capacity.void
ensureCapacity(int minCapacity)
Ensures that the capacity of the internal arrays is at least a given capacity.Set<Map.Entry<K,V>>
entrySet()
V
get(Object key)
Returns the value set for the given key ornull
if there is no such mapping or if the mapping value isnull
.int
getIndexOfKey(K key)
Returns the index of the given key or-1
if there is no such key.K
getKey(int index)
Returns the key at the given index ornull
if out of bounds.V
getValue(int index)
Returns the value at the given index ornull
if out of bounds.static <K,V>
ArrayMap<K,V>of(Object... keyValuePairs)
Returns a new instance of an array map of the given key value pairs in alternating order.V
put(K key, V value)
Sets the value for the given key, overriding any existing value.V
remove(int index)
Removes the key/value mapping at the given index, or ignored if the index is out of bounds.V
remove(Object key)
Removes the key-value pair of the given key, or ignore if the key cannot be found.V
set(int index, K key, V value)
Sets the key/value mapping at the given index, overriding any existing key/value mapping.V
set(int index, V value)
Sets the value at the given index, overriding any existing value mapping.int
size()
Returns the number of key-value pairs set.void
trim()
Trims the internal array storage to minimize memory usage.-
Methods inherited from class java.util.AbstractMap
equals, hashCode, isEmpty, keySet, putAll, toString, values
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Method Detail
-
create
public static <K,V> ArrayMap<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();
.
-
create
public static <K,V> ArrayMap<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);
.
-
of
public static <K,V> ArrayMap<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.
-
size
public final int size()
Returns the number of key-value pairs set.
-
getKey
public final K getKey(int index)
Returns the key at the given index ornull
if out of bounds.
-
getValue
public final V getValue(int index)
Returns the value at the given index ornull
if out of bounds.
-
set
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.
- Returns:
- previous value or
null
for none - Throws:
IndexOutOfBoundsException
- if index is negative
-
set
public final V set(int index, V value)
Sets the value at the given index, overriding any existing value mapping.- Returns:
- previous value or
null
for none - Throws:
IndexOutOfBoundsException
- if index is negative or>=
size
-
add
public final void add(K key, V value)
Adds the key/value mapping at the end of the list. Behaves identically toset(size(), key, value)
.- Throws:
IndexOutOfBoundsException
- if index is negative
-
remove
public final V remove(int index)
Removes the key/value mapping at the given index, or ignored if the index is out of bounds.- Returns:
- previous value or
null
for none
-
containsKey
public final boolean containsKey(Object key)
Returns whether there is a mapping for the given key.- Specified by:
containsKey
in interfaceMap<K,V>
- Overrides:
containsKey
in classAbstractMap<K,V>
-
getIndexOfKey
public final int getIndexOfKey(K key)
Returns the index of the given key or-1
if there is no such key.
-
get
public final V get(Object key)
Returns the value set for the given key ornull
if there is no such mapping or if the mapping value isnull
.
-
put
public final V put(K key, V value)
Sets the value for the given key, overriding any existing value.
-
remove
public final V remove(Object key)
Removes the key-value pair of the given key, or ignore if the key cannot be found.
-
trim
public final void trim()
Trims the internal array storage to minimize memory usage.
-
ensureCapacity
public final void ensureCapacity(int minCapacity)
Ensures that the capacity of the internal arrays is at least a given capacity.
-
clear
public void clear()
-
containsValue
public final boolean containsValue(Object value)
- Specified by:
containsValue
in interfaceMap<K,V>
- Overrides:
containsValue
in classAbstractMap<K,V>
-
-