NEPLg2 Standard Library - hashmap - hashmap
Web Playground
Web Playground

hashmap

HashKey trait にもとづく generic 連想配列れんそうはいれつ

目的もくてき

  • HashMap<.K, .V>提供ていきょうし、new / insert / get / contains / remove / len / free の bare 名で操作そうさできるようにします。
  • key ごとの比較ひかくと hash 計算けいさんHashKey trait に委譲いじょうし、specialized helper 名に依存いぞんしない collection にします。

実装じっそう

  • open addressing + linear probing の固定長こていちょう hash table です。
  • bucket 状態じょうたい0 = empty, 1 = full, 2 = tombstone管理かんりし、削除さくじょで probe chain がこわれないようにします。

注意ちゅうい

  • key 型 .KHashKey の impl を必要ひつようがあります。
  • 容量ようりょう固定こていで、自動 rehash はまだおこないません。満杯まんぱいでは Diag::CapacityExceededかえします。

計算量けいさんりょう

  • 平均へいきん insert / get / contains / remove は O(1) です。
  • 最悪さいあくは probe が全体ぜんたい走査そうさして O(n) です。

HashMap

key/value を保持ほじする hash table の本体ほんたい

new

からHashMap<.K, .V>つく

insert

key に value を挿入そうにゅうまたは更新こうしんする

get

key に対応たいおうする value をさが

contains

key の存在そんざいたしかめる

remove

key を削除さくじょする

len

要素数ようそすうかえ

free

内部ないぶメモリを解放かいほうする