hashmap
HashKey trait に
目的
HashMap<.K, .V>を提供 し、new/insert/get/contains/remove/len/freeの bare 名で操作 できるようにします。- key ごとの
比較 と hash計算 はHashKeytrait に委譲 し、specialized helper 名に依存 しない collection にします。
実装
- open addressing + linear probing の
固定長 hash table です。 - bucket
状態 は0 = empty,1 = full,2 = tombstoneで管理 し、削除 で probe chain が壊 れないようにします。
注意
- key 型
.KはHashKeyの impl を持 つ必要 があります。 容量 は固定 で、自動 rehash はまだ行 いません。満杯 ではDiag::CapacityExceededを返 します。
計算量
平均 insert/get/contains/removeは O(1) です。最悪 は probe が全体 を走査 して O(n) です。
HashMap
key/value を
new
HashMap<.K, .V> を
insert
key に value を
get
key に
contains
key の
remove
key を