我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因?
不一定是这种情况,但大多数时候可能是这样。
请考虑以下情况:
我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oranges”。如果我先对字符串进行哈希处理然后再进行比较,则速度要慢得多,因为在比较结果整数之前,我必须解析两个字符串并将它们输入哈希算法。
但是,如果我需要多次进行这种比较,也许我正在将“橙色”与“猩猩”进行大量的比较,那么如果我对所有字符串进行一次哈希并多次进行整数比较,它将可以正常工作快点。这是哈希映射所基于的原理。
但是请注意,对字符串进行哈希处理可用于直接等于比较,它无法确定字符串在语法上彼此之间是大于还是小于,因此无法通过哈希方法对字符串进行排序。(这就是为什么Java中的HashMap是无序的)。