Java String hascode保留顺序和基于哈希的分区

Java String hascode preserving order and Hash based partitioning

基于 java api 文档中的以下函数,它似乎确实保留了顺序。 s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] 我还测试了一些 hascode 与实际字符串顺序相似的示例。但只是想和其他人核实一下,以防我在这里遗漏了什么。

我接下来的问题是关于在使用hadoop或spark的大数据应用程序中是否使用HashPartitioner或OrderPreservingPartitioner。如果您的密钥只是一个 Java 字符串,那么 HashPartitioner 也应该保留顺序,对吧?

你的前提是错误的:它不保持秩序。 "Aa"hashCode2112BAhashCode2111"Aa""BA" 之前,但它的 hashCode 更大。

(此外,不需要很长的字符串就会溢出整数并且数字开始回绕,这也违反了您的假设。)

所以不,none 这些保留顺序。