当前位置: 首页 > 面试题库 >

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

严琨
2023-03-14
问题内容

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


问题答案:

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

请考虑以下情况:

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

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

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



 类似资料:
  • 主要内容:equals() 方法,equalsIgnoreCase() 方法,equals()与==的比较,compareTo() 方法字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等。 在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面详细介绍这 3 个方法的使用。 equals() 方法 equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相

  • 我在客户端将一些参数存储在HTML中,然后需要将它们作为整数进行比较。不幸的是,我遇到了一个我无法解释的严重错误。bug似乎是我的JS将参数作为字符串而不是整数读取,导致我的整数比较失败。 我生成了一个错误的小例子,我也无法解释。运行时,以下返回“true”:

  • 问题内容: 在继续之前: 我知道我们应该使用.equals()比较内容。 我现在只是在谈论以下情况下的实际引用是否相同… 说我们有以下内容: 我认为应该是正确的,因为在字符串池中,对“字符串”的引用应该与str1和str2相同,现在都是“字符串”。它应该为true,但最终为 false 。 我尝试过,这次返回了 true 。然后我尝试了: 同样是 System.out.println(“ str”

  • 问题内容: 我有一个简单的疑问。如果有人帮助我,那就太好了。 我有两个字符串: 这两个值相等,但是如何在Java中比较它们呢?我们拥有并用于比较字符串alpha值,类似地,如何比较数字值。 问题答案: 这就对了。您可以使用方法将数字字符串转换为整数,该方法将返回类型。然后比较与相同。

  • 问题内容: 我写了一个从套接字读取一行的代码。 如果该行是“再见”,我希望它输出“ nice”。由于某种原因它不起作用,尽管我确实尝试无条件输出输入,并且确实说“再见” 这是我的代码 问题答案: 使用,而不是比较字符串。

  • 问题内容: 给我输出: 我不太了解第一行,为什么它会给我带来错误? 如果我在字符串2上添加空格,则此行为false,但如果不添加空格,则为true: 为什么第1行给我假,但第6行为真,但是如果我在string2上添加空格则为假。 谢谢=) 问题答案: 那里发生了几件事。 当您将两个字符串声明为相等的“ Hi”时,java将对其进行优化以引用相同的字符串对象(因此不必将相同的字符串存储两次)。 “