プログラミング原人の進化ログ

プログラミング原人の進化論

オレ プログラミング ベンキョウ スル。マナンダ コト カク。

【Common Lisp】ハッシュテーブルの基本

lispのハッシュテーブルの勉強メモです。

ハッシュテーブル

ハッシュテーブルはlispの持つ複合的なデータ型の一つで、キーと値をセットにして管理します。連想リストと似ていますが、より高速に定数時間で要素にアクセスできます。

ハッシュテーブルを作る

make-hash-tableを使います。

CL-USER> (defparameter x (make-hash-table))
X
CL-USER> x
#S(HASH-TABLE :TEST FASTHASH-EQL)

値を取り出す・格納する

キーを指定して要素にアクセスするにはgethashを使います。setfと組み合わせることで指定したキーと値のセットを格納することができます。

CL-USER> (gethash 'yup x)
NIL
NIL
CL-USER> (setf (gethash 'yup x) 25)
25
CL-USER> (gethash 'yup x)
25
T

gethashが2つの値を返していますが、1つ目は要素の値を、2つ目は指定したキーを持つ要素が見つかったか否かを示しています。

要素を削除する

remhashを使います。remhashは指定したキーを持つ要素が存在すれば削除してtを返し、存在しなければnilを返します。

CL-USER> (remhash 'yup x)
T
CL-USER> (gethash 'yup x)
NIL
NIL
CL-USER> (remhash 'yup x)
NIL

参考

コンラッドバルスキ(2013)「Land of Lisp」 川合史郎訳 オライリー・ジャパン