(defunxah-hashtable-equal (ztable-aztable-b)
"Return t if two hashtable are same, else nil.
Same means
• count of keys is same
• keys are same by `equal'
• values are same by `equal'
URL `http://xahlee.info/emacs/emacs/elisp_hash_table_equality.html'
Created: 2024-04-20
Version: 2025-08-31"
(interactive)
(let ((xnokeyval:hzhbkyp))
(catch 'tag
(when (not (eq (hash-table-countztable-a) (hash-table-countztable-b))) (throw 'tag nil))
(maphash
(lambda (kk vv)
(when (equalxnokeyval (gethash kk ztable-bxnokeyval)) (throw 'tag nil))
(when (not (equal vv (gethash kk ztable-b))) (throw 'tag nil)))
ztable-a)
t)))
Test
(setqx-a
#s(hash-table
size 30
test equal
data (
"aa" 3
"bb" 9
"cc" 5 )))
(setqx-b
#s(hash-table
size 30
test equal
data (
"bb" 9
"aa" 3
"cc" 5 )))
(xah-hashtable-equalx-ax-b )