假設我想要計算一個數據結構的散列,使用像MD5這樣的接受串行流的散列算法來進行等價檢查。 (我想記錄散列,然後在相同或等效的數據結構上重新計算散列,並檢查散列以便以高概率測量等價。)計算數據結構的散列?
是否有標準方法來執行此操作?
問題我可以看到,是有問題的是
- 如果該數據結構包含二進制字符串數組,我不能只將它們連接起來,因爲[「ABC」,「DEFG」]和[「AB 「,」cdefg「]不是等價的數組
- 如果數據結構包含不保證以相同順序枚舉的集合,例如一個鍵值字典{a:「bc」,d:「efg」,h:「ijkl」},它應該被認爲等價於一個鍵值對{d:「efg」,h:「ijkl」,a: 「公元前」}。
除非您使用的是函數式語言,否則還有像數組這樣的對象被用作鍵然後更改其值的問題。該對象是否仍然是有效的密鑰?在ruby中,例如Hash類有一個實例方法rehash(這裏是該類的實現:http://www.ruby-doc.org/doxygen/1.8.4/hash_8c-source.html) – 2009-10-16 17:42:24