Scatter Map
ScatterMap is a container with a Map-like interface based on a flat hash table implementation (the key/value mappings are not stored by nodes but directly into arrays). The underlying implementation is designed to avoid all allocations on insertion, removal, retrieval, and iteration. Allocations may still happen on insertion when the underlying storage needs to grow to accommodate newly added entries to the table. In addition, this implementation minimizes memory usage by avoiding the use of separate objects to hold key/value pairs.
This implementation makes no guarantee as to the order of the keys and values stored, nor does it make guarantees that the order remains constant over time.
This implementation is not thread-safe: if multiple threads access this container concurrently, and one or more threads modify the structure of the map (insertion or removal for instance), the calling code must provide the appropriate synchronization. Multiple threads are safe to read from this map concurrently if no write is happening.
This implementation is read-only and only allows data to be queried. A mutable implementation is provided by MutableScatterMap.
Note: when a Map is absolutely necessary, you can use the method asMap to create a thin wrapper around a ScatterMap. Please refer to asMap for more details and caveats.
ScatterMap and SimpleArrayMap: like SimpleArrayMap, ScatterMap/MutableScatterMap is designed to avoid the allocation of extra objects when inserting new entries in the map. However, the implementation of ScatterMap/MutableScatterMap offers better performance characteristics compared to SimpleArrayMap and is thus generally preferable. If memory usage is a concern, SimpleArrayMap automatically shrinks its storage to avoid using more memory than necessary. You can also control memory usage with MutableScatterMap by manually calling MutableScatterMap.trim.
See also
Inheritors
Properties
Functions
Wraps this ScatterMap with a Map interface. The Map is backed by the ScatterMap, so changes to the ScatterMap are reflected in the Map. If the ScatterMap is modified while an iteration over the Map is in progress, the results of the iteration are undefined.
Returns true if the specified key is present in this hash map, false otherwise.
Returns true if the specified value is present in this hash map, false otherwise.
Iterates over every key stored in this map by invoking the specified block lambda.
Iterates over every value stored in this map by invoking the specified block lambda.
Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.
Returns true if this map is not empty.