Module collections/ordered_map
Insertion-ordered map.
OrderedMap(K, V) preserves the order in which keys were first inserted,
similar to JavaScript's Map or Python's dict (≥ 3.7). Backed by a
HashMap for O(1) average-time lookup and an ArrayList of keys for
deterministic iteration order.
Complexity
set(new key): O(1) amortizedset(existing key): O(1) — value updated in place, order unchangedget/contains_key: O(1) averageremove: O(n) — must rebuild the key order list to skip the removed keyiter/keys/values: O(n), in insertion order
Example
{ OrderedMap } :: import "std/collections/ordered_map";
m := OrderedMap(String, i32).new();
m.set(`alpha`, i32(1));
m.set(`beta`, i32(2));
m.set(`gamma`, i32(3));
// Iteration yields keys in insertion order.
it := m.keys();
while true, {
match(it.next(),
.Some(k) => println(k),
.None => break
);
};
Types
Ordered map preserving insertion order of keys.
Keys must implement Eq and Hash.
Type Parameters
| Name | Type | Notes |
|---|---|---|
K | Type | comptime |
V | Type | comptime |
impl(forall(K : Type, V : Type), where(K <: (Eq(K), Hash)), OrderedMap(K, V), ...)
new : (fn() -> Self)Create an empty OrderedMap.
Returns: Self
len : (fn(self : Self) -> usize)Number of entries.
Returns: usize
is_empty : (fn(self : Self) -> bool)Whether the map is empty.
Returns: bool
contains_key : (fn(self : Self, key : K) -> bool)Returns true if key is present.
Returns: bool
get : (fn(self : Self, key : K) -> Option(V))Returns the value for key, or .None.
Returns: Option(V)
set : (fn(self : Self, key : K, value : V) -> Result(Option(V), HashMapError))Insert or update key -> value.
- For a new key, appends
keyto the insertion order. - For an existing key, only updates the value; order is preserved.
Returns Ok(.Some(old_value)) if key already existed, Ok(.None) for
a new key, or .Err(_) on allocation failure.
Returns: Result(Option(V), HashMapError)
remove : (fn(self : Self, key : K) -> Option(V))Remove key. Returns the removed value or .None.
O(n) — rebuilds the key order list to drop the removed key.
Returns: Option(V)
clear : (fn(self : Self) -> unit)Remove all entries.
Returns: unit
impl(forall(K : Type, V : Type), where(K <: (Eq(K), Hash)), OrderedMap(K, V), ...)
keys : (fn(self : Self) -> OrderedMapKeys(K, V))Iterator over keys in insertion order.
Returns: OrderedMapKeys(K, V)
values : (fn(self : Self) -> OrderedMapValues(K, V))Iterator over values in insertion order.
Returns: OrderedMapValues(K, V)
iter : (fn(self : Self) -> OrderedMapIter(K, V))Iterator over (key, value) pairs in insertion order.
Returns: OrderedMapIter(K, V)
Iterator over the keys of an OrderedMap in insertion order.
Type Parameters
| Name | Type | Notes |
|---|---|---|
K | Type | comptime |
V | Type | comptime |
impl(forall(K : Type, V : Type), where(K <: (Eq(K), Hash)), OrderedMapKeys(K, V), ...)
next : (fn(ref(self) : Self) -> Option(K))Returns: Option(K)
Iterator over the values of an OrderedMap in insertion order.
Type Parameters
| Name | Type | Notes |
|---|---|---|
K | Type | comptime |
V | Type | comptime |
impl(forall(K : Type, V : Type), where(K <: (Eq(K), Hash)), OrderedMapValues(K, V), ...)
next : (fn(ref(self) : Self) -> Option(V))Returns: Option(V)
Iterator over (key, value) pairs of an OrderedMap in insertion order.
Type Parameters
| Name | Type | Notes |
|---|---|---|
K | Type | comptime |
V | Type | comptime |
impl(forall(K : Type, V : Type), where(K <: (Eq(K), Hash)), OrderedMapIter(K, V), ...)
next : (fn(ref(self) : Self) -> Option(OrderedMapEntry(K, V)))Returns: Option(OrderedMapEntry(K, V))