一尘不染

数字比较比字符串比较快吗?

java

我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因?


阅读 724

收藏
2020-12-03

共1个答案

一尘不染

不一定是这种情况,但大多数时候可能是这样。

请考虑以下情况:

我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“
oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“
oranges”。如果我先对字符串进行哈希处理然后再进行比较,则速度要慢得多,因为在比较结果整数之前,我必须解析两个字符串并将它们输入哈希算法。

但是,如果我需要多次进行这种比较,也许我正在将“橙色”与“猩猩”进行大量的比较,那么如果我对所有字符串进行一次哈希并多次进行整数比较,它将可以正常工作快点。这是哈希映射所基于的原理。

但是请注意,对字符串进行哈希处理可用于直接等于比较,它无法确定字符串在语法上彼此之间是大于还是小于,因此无法通过哈希方法对字符串进行排序。(这就是为什么Java中的HashMap是无序的)。

2020-12-03