Class OrderedMap<K,V>
java.lang.Object
org.javimmutable.collections.common.AbstractMap<K,V>
org.javimmutable.collections.inorder.OrderedMap<K,V>
- All Implemented Interfaces:
Serializable
,Iterable<IMapEntry<K,
,V>> ICollection<IMapEntry<K,
,V>> IMap<K,
,V> InvariantCheckable
,IStreamable<IMapEntry<K,
,V>> Mapped<K,
,V> SplitableIterable<IMapEntry<K,
V>>
IMap
implementation that allows iteration over members in the order in which they
were inserted into the map. Maintains two parallel data structures, one for sorting and
the other for storing entries. Gets are approximately as fast as hash map gets but updates
are significantly slower.- See Also:
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionOrderedMap
<K, V> Sets the value associated with a specific key.static <K,
V> IMapBuilder <K, V> builder()
void
Checks invariants of implementing class.OrderedMap
<K, V> Deletes the entry for the specified key (if any).OrderedMap
<K, V> Search for a value within the map and return a Holder indicating if the value was found and, if it was found, the value itself.Search for an Entry within the map and return a Holder indicating if the Entry was found and, if it was found, the Entry itself.int
getValueOr
(K key, V defaultValue) Return the value associated with key or defaultValue if no value is associated.iterator()
Overridden here to require implementations to return a SplitableIterator rather than a basic Iterator.keys()
Creates an IStreamable to access all of the Map's keys.Creates a Builder with the same type signature as this Map.Returns a Collector that creates a set of the same type as this containing all of the collected values inserted over whatever starting values this already contained.static <K,
V> OrderedMap <K, V> of()
int
size()
values()
Creates an IStreamable to access all of the Map's values.Methods inherited from class org.javimmutable.collections.common.AbstractMap
assignAll, assignAll, equals, get, getMap, hashCode, insert, reject, select, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.javimmutable.collections.ICollection
isEmpty, isNonEmpty
Methods inherited from interface org.javimmutable.collections.IMap
forEach, forEachThrows, insertAll, insertAll, reduce, reduceThrows, update
Methods inherited from interface org.javimmutable.collections.IStreamable
parallelStream, spliterator, stream
Methods inherited from interface org.javimmutable.collections.SplitableIterable
forEachThrows, indexedForEach, indexedForEachThrows, reduce, reduceThrows
-
Field Details
-
EMPTY
-
-
Method Details
-
of
-
builder
-
mapBuilder
Description copied from interface:IMap
Creates a Builder with the same type signature as this Map.- Specified by:
mapBuilder
in interfaceIMap<K,
V>
-
createMapCollector
-
mapCollector
Description copied from interface:IMap
Returns a Collector that creates a set of the same type as this containing all of the collected values inserted over whatever starting values this already contained.- Specified by:
mapCollector
in interfaceIMap<K,
V>
-
getValueOr
Description copied from interface:Mapped
Return the value associated with key or defaultValue if no value is associated. Note that if defaultValue is an acceptable value to the container then this method will be ambiguous and find() should be used instead.- Specified by:
getValueOr
in interfaceMapped<K,
V> - Parameters:
key
- identifies the value to retrievedefaultValue
- value to return if no entry exists for key- Returns:
- value associated with key or defaultValue if no value is associated
-
find
Description copied from interface:IMap
Search for a value within the map and return a Holder indicating if the value was found and, if it was found, the value itself. Holder allows null values to be returned unambiguously. -
findEntry
Description copied from interface:IMap
Search for an Entry within the map and return a Holder indicating if the Entry was found and, if it was found, the Entry itself. -
assign
Description copied from interface:IMap
Sets the value associated with a specific key. Key must be non-null but value can be null. If the key already has a value in the map the old value is discarded and the new value is stored in its place. Returns a newIMap
reflecting any changes. The original map is always left unchanged. -
delete
Description copied from interface:IMap
Deletes the entry for the specified key (if any). Returns a new map if the value was deleted or the current map if the key was not contained in the map. -
size
public int size()- Specified by:
size
in interfaceICollection<K>
- Returns:
- number of values in the collection
-
deleteAll
-
iterator
Description copied from interface:IStreamable
Overridden here to require implementations to return a SplitableIterator rather than a basic Iterator. This is necessary to allow composition of new objects from methods like keys() and values().- Specified by:
iterator
in interfaceIStreamable<K>
- Specified by:
iterator
in interfaceIterable<K>
- Specified by:
iterator
in interfaceSplitableIterable<K>
-
keys
Description copied from interface:IMap
Creates an IStreamable to access all of the Map's keys. -
values
Description copied from interface:IMap
Creates an IStreamable to access all of the Map's values. -
getSpliteratorCharacteristics
public int getSpliteratorCharacteristics()- Specified by:
getSpliteratorCharacteristics
in interfaceIStreamable<K>
- Overrides:
getSpliteratorCharacteristics
in classAbstractMap<K,
V> - Returns:
- characteristics value used when creating Spliterators
-
checkInvariants
public void checkInvariants()Description copied from interface:InvariantCheckable
Checks invariants of implementing class.- Specified by:
checkInvariants
in interfaceInvariantCheckable
-