docs: update DECLARATION_V4.pdf with GitHub and GitLink repository links
An insertion-order-preserving hash map for MoonBit.
Eq
Debug
moon add moonbit-community/indexmap
Then import in your .mbt files:
.mbt
let m = @indexmap.IndexMap::new()
test { // Create and populate let m = @indexmap.IndexMap::from([("b", 2), ("a", 1), ("c", 3)]) // Lookup by key — O(1) assert_eq(m.get("a"), Some(1)) assert_eq(m["b"], 2) // panics if missing // Iteration preserves insertion order let keys = m.keys_iter().to_array() // ["b", "a", "c"] // Access by index assert_eq(m.get_index_key(0), Some("b")) assert_eq(m.get_index(1), Some(("a", 1))) // Update (keeps original position) m.set("a", 99) // still: ["b", "a", "c"], but m["a"] == 99 // Remove assert_eq(m.remove("a"), Some(99)) // now: ["b", "c"] }
IndexMap::new()
IndexMap::with_capacity(n)
n
IndexMap::from(arr)
ArrayView[(K, V)]
m.set(key, value)
m.get(key) -> V?
Option
m.at(key) -> V
m.contains_key(key) -> Bool
m.remove(key) -> V?
m.get_index(i) -> (K, V)?
i
m.get_index_key(i) -> K?
m.get_index_value(i) -> V?
m.iter() -> Iter[(K, V)]
m.keys_iter() -> Iter[K]
m.values_iter() -> Iter[V]
m.length() -> Int
m.is_empty() -> Bool
m[key]
m[key] = value
Internally uses:
Apache-2.0
为 MoonBit 语言实现的插入顺序保持哈希映射库。采用 Robin Hood 哈希算法,支持 O(1) 平均键值查找、O(1)索引访问,迭代始终按插入顺序进行。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
indexmap
An insertion-order-preserving hash map for MoonBit.
Features
EqandDebugtraitsInstallation
Then import in your
.mbtfiles:Quick Start
API Reference
Construction
IndexMap::new()IndexMap::with_capacity(n)nslotsIndexMap::from(arr)ArrayView[(K, V)]Core Operations
m.set(key, value)m.get(key) -> V?Optionm.at(key) -> Vm.contains_key(key) -> Boolm.remove(key) -> V?Index Access
m.get_index(i) -> (K, V)?im.get_index_key(i) -> K?im.get_index_value(i) -> V?iIteration
m.iter() -> Iter[(K, V)]m.keys_iter() -> Iter[K]m.values_iter() -> Iter[V]Collection Info
m.length() -> Intm.is_empty() -> BoolOperators
m[key]— bracket read (panics if missing)m[key] = value— bracket writeDesign
Internally uses:
License
Apache-2.0