Java字符串的hashCode值计算为(String.hashCode()
):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
是否在任何情况下(例如JVM版本,供应商等),以下表达式将被评估为false?
boolean expression = "This is a Java string".hashCode() == 586653468
更新#1:如果您声称答案是“是的,则有这种情况”-然后请举一个具体示例说明何时“这是Java字符串”。hashCode()!=586653468
。请尽量具体/具体尽可能。
更新#2:我们都知道,依赖hashCode()的实现细节通常是不好的。但是,我在专门谈论String.hashCode()-因此请始终将答案集中在String.hashCode()上。在此问题的上下文中,Object.hashCode()
完全不相关。
我可以看到该文档最早可以追溯到Java 1.2。
的确,总的来说,您不应该依赖散列码实现,而是将其记录为的行为java.lang.String
,因此,对其进行更改将视为违反现有合同。
只要有可能,你不应该依赖于哈希码跨版本等保持相同-但在我的脑海里java.lang.String
完全是因为算法的特殊情况已经指定了......只要你愿意放弃与以前版本的兼容性当然指定了算法。
原件: “lorem ipsum dolor sit amet,consectetur adipiscing elit.Sed rutrum imperdiet versit.Nulla eu sapien tincidunt,pellentesque ipsum in,lucuts eros.Nullam tristique arcu lorem,at fringilla lectus tinc
我正在创建一个程序,它可以决定用户的移动方向是否是顺时针方向(N,E,S,W)。 例如,我有变量: UsersDirection不是顺时针方向,因为它必须是“sw”,就像在correctdirection。我不知道如何比较这两个字符串,我甚至不知道如何开始。
如何检查一个字符串是否在另一个字符串中,但匹配项需要在前面,而不是中间或最后。例如,a="
问题 你想在字节字符串上执行普通的文本操作(比如移除,搜索和替换)。 解决方案 字节字符串同样也支持大部分和文本字符串一样的内置操作。比如: >>> data = b'Hello World' >>> data[0:5] b'Hello' >>> data.startswith(b'Hello') True >>> data.split() [b'Hello', b'World'] >>> dat
使用Java的hashcode函数可以为不同的字符串提供相同的hashcode吗?或者如果有可能,那么可能性的百分比是多少?
问题内容: 可以说我有这个单词列表: 比我有文字 是否有匹配stopWords并在忽略大小写时将其删除的方法;像这样的地方?: 结果: 如果您了解正则表达式,效果很好,但我真的更喜欢像Commons解决方案这样的东西,它更注重性能。 顺便说一句,现在我正在使用此通用方法,该方法缺少适当的不区分大小写的处理: 问题答案: 这是不使用正则表达式的解决方案。我认为它不如我的其他答案,因为它更长且不清楚,