public interface EconomicMap<K,V> extends UnmodifiableEconomicMap<K,V>
HashMap
, it avoids allocating an extra node object per entry and rather
keeps values always in a plain array. See EconomicMapImpl
for implementation details and
exact thresholds when its representation changes.
It supports a null
value, but it does not support adding or looking up a null
key. Operations get
and put
provide constant-time performance on average if
repeatedly performed. They can however trigger an operation growing or compressing the data
structure, which is linear in the number of elements. Iteration is also linear in the number of
elements.
The implementation is not synchronized. If multiple threads want to access the data structure, it
requires manual synchronization, for example using Collections.synchronizedMap(java.util.Map<K, V>)
.
There is also no extra precaution to detect concurrent modification while iterating.
Different strategies for the equality comparison can be configured by providing a
Equivalence
configuration object.Modifier and Type | Method and Description |
---|---|
void |
clear()
Removes all of the mappings from this map.
|
static <K,V> EconomicMap<K,V> |
create()
Creates a new map that guarantees insertion order on the key set with the default
Equivalence.DEFAULT comparison strategy for keys. |
static <K,V> EconomicMap<K,V> |
create(Equivalence strategy)
Creates a new map that guarantees insertion order on the key set with the given comparison
strategy for keys.
|
static <K,V> EconomicMap<K,V> |
create(Equivalence strategy,
int initialCapacity)
Creates a new map that guarantees insertion order on the key set and initializes with a
specified capacity.
|
static <K,V> EconomicMap<K,V> |
create(Equivalence strategy,
UnmodifiableEconomicMap<K,V> m)
Creates a new map that guarantees insertion order on the key set and copies all elements from
the specified existing map.
|
static <K,V> EconomicMap<K,V> |
create(int initialCapacity)
Creates a new map that guarantees insertion order on the key set with the default
Equivalence.DEFAULT comparison strategy for keys and initializes with a specified
capacity. |
static <K,V> EconomicMap<K,V> |
create(UnmodifiableEconomicMap<K,V> m)
Creates a new map that guarantees insertion order on the key set with the default
Equivalence.DEFAULT comparison strategy for keys and copies all elements from the
specified existing map. |
static <K,V> MapCursor<K,V> |
emptyCursor()
Return an empty
MapCursor . |
static <K,V> EconomicMap<K,V> |
emptyMap()
Return an empty, unmodifiable
EconomicMap . |
MapCursor<K,V> |
getEntries()
Returns a
MapCursor view of the mappings contained in this map. |
static <K,V> EconomicMap<K,V> |
of(K key1,
V value1)
Creates an
EconomicMap with one mapping. |
static <K,V> EconomicMap<K,V> |
of(K key1,
V value1,
K key2,
V value2)
Creates an
EconomicMap with two mappings. |
V |
put(K key,
V value)
Associates
value with key in this map. |
default void |
putAll(EconomicMap<K,V> other)
Copies all of the mappings from
other to this map. |
default void |
putAll(UnmodifiableEconomicMap<? extends K,? extends V> other)
Copies all of the mappings from
other to this map. |
default V |
putIfAbsent(K key,
V value)
If the specified key is not already associated with a value (or is mapped to
null )
associates it with the given value and returns null , else returns the current value. |
V |
removeKey(K key)
Removes the mapping for
key from this map if it is present. |
void |
replaceAll(BiFunction<? super K,? super V,? extends V> function)
Replaces each entry's value with the result of invoking
function on that entry until
all entries have been processed or the function throws an exception. |
static <K,V> EconomicMap<K,V> |
wrapMap(Map<K,V> map)
Wraps an existing
Map as an EconomicMap . |
containsKey, get, get, getEquivalenceStrategy, getKeys, getValues, isEmpty, size
V put(K key, V value)
value
with key
in this map. If the map previously contained a
mapping for key
, the old value is replaced by value
. While the value
may be null
, the key
must not be {code null}.key
, or null
if there was no
mapping for key
.default V putIfAbsent(K key, V value)
null
)
associates it with the given value and returns null
, else returns the current value.key
- key with which the specified value is to be associatedvalue
- value to be associated with the specified keynull
if there was no
mapping for the key. (A null
return can also indicate that the map previously
associated null
with the key, if the implementation supports null values.)default void putAll(EconomicMap<K,V> other)
other
to this map.default void putAll(UnmodifiableEconomicMap<? extends K,? extends V> other)
other
to this map.void clear()
V removeKey(K key)
key
from this map if it is present. The map will not contain
a mapping for key
once the call returns. The key
must not be null
.key
, or null
if there was no
mapping for key
.MapCursor<K,V> getEntries()
MapCursor
view of the mappings contained in this map.getEntries
in interface UnmodifiableEconomicMap<K,V>
void replaceAll(BiFunction<? super K,? super V,? extends V> function)
function
on that entry until
all entries have been processed or the function throws an exception. Exceptions thrown by the
function are relayed to the caller.static <K,V> EconomicMap<K,V> create()
Equivalence.DEFAULT
comparison strategy for keys.static <K,V> EconomicMap<K,V> create(int initialCapacity)
Equivalence.DEFAULT
comparison strategy for keys and initializes with a specified
capacity.static <K,V> EconomicMap<K,V> create(Equivalence strategy)
static <K,V> EconomicMap<K,V> create(UnmodifiableEconomicMap<K,V> m)
Equivalence.DEFAULT
comparison strategy for keys and copies all elements from the
specified existing map.static <K,V> EconomicMap<K,V> create(Equivalence strategy, UnmodifiableEconomicMap<K,V> m)
static <K,V> EconomicMap<K,V> create(Equivalence strategy, int initialCapacity)
static <K,V> EconomicMap<K,V> wrapMap(Map<K,V> map)
Map
as an EconomicMap
.static <K,V> EconomicMap<K,V> emptyMap()
EconomicMap
.static <K,V> EconomicMap<K,V> of(K key1, V value1)
EconomicMap
with one mapping.key1
- the key of the first mappingvalue1
- the value of the first mappingstatic <K,V> EconomicMap<K,V> of(K key1, V value1, K key2, V value2)
EconomicMap
with two mappings.key1
- the key of the first mappingvalue1
- the value of the first mappingkey2
- the key of the second mappingvalue2
- the value of the second mapping