String的不可变性之一的优点是哈希码缓存,以便更快地访问。
- 在这种情况下,具有相同哈希码的字符串如何处理缓存?
- 这种情况下它真的可以提高性能吗?
equals(Object)
中根本不使用hashcode值。我不知道其他/旧版本的Java... - Stephen Cequals
方法时字符串的哈希码尚未计算出来... 而且以后也不会被使用。Sun/Oracle的Java开发人员进行了大量的代码分析和测试,以确定哪些优化实际上在实际生活中是有效的。 - Stephen C对于第一个问题,它取决于您的哈希策略。例如,如果您将单词中所有字母的ASCII代码相加以获得该字母的哈希代码(a的代码为65,A的代码为97),在这种情况下,单词“abc”和“bca”的哈希代码相同。
对于第二个问题,它也取决于您的哈希策略,但在大多数情况下,答案是肯定的。