【发布时间】:2012-03-07 07:44:56
【问题描述】:
我正在寻找一个好的 hash 实用程序 或 框架 来将字符串映射到范围内的某个 int 值,例如 {1 .. k} 我应该在运行时组件中使用它,该组件接收来自用户的大量并发请求,'userId' 是字符串,我想将该值映射到定义的整数范围。
当然,userId 值的长度可能不同,但我可以假设使用此函数的最小长度
应该很快
谢谢
【问题讨论】:
-
你是在为一个哈希表做一个哈希,还是一个唯一的 ID?
-
当两个用户标识映射到同一个整数时会发生什么?这称为“碰撞”,必须加以处理。
String.hashCode()已经完成了合理的工作,您可以通过str.hashCode()%k + 1将结果放入{1..k} -
但我看到了问题——这不起作用,因为哈希码是供参考的,因此两个相同的字符串将得到不同的哈希码` public static void main(String[] args) { Scanner input=new Scanner (系统.in); System.out.println("请输入字符串:");字符串 str1=input.nextLine(); System.out.println("请输入字符串:");字符串 str2=input.nextLine(); System.out.println(str1.hashCode() + " " + str2.hashCode()); } ` 这是输出:
-
@Julias 那是不正确的。建议你看一下String.hashCode()的代码,或者自己试试。
-
如果您想添加代码和示例,我建议您在问题中包含此内容。注释不能很好地处理代码。 :(
标签: java performance