作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
一次性根据这些字符串的值计算哈希码的最佳方法是什么?
好的,我的意思是它需要:
1 - 快速:我需要获取大量短字符串列表(10^3..10^8 项)的哈希码。
2 - 识别整个数据列表如此多的列表可能只有几个不同的字符串必须有不同的哈希码
如何用 Java 实现?
也许有一种方法可以使用现有的字符串哈希码,但是如何合并为单独的字符串计算的许多哈希码?
谢谢。
最佳答案
为您的字符串创建一个占位符类,然后使用 CRC32 class .它简单快速:
import java.util.zip.CRC32;
public class HugeStringCollection {
private Collection<String> strings;
public HugeStringCollection(Collection<String> strings) {
this.strings = strings;
}
public int hashCode() {
CRC32 crc = new CRC32();
for(String string : strings) {
crc.update(string.getBytes())
}
return (int)( crc.getValue() );
}
}
如果集合本身是不可变的,您可以计算一次哈希并将其存储以供后期重用。
关于java - 如何为一个巨大的字符串列表计算一个好的哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638411/
我是一名优秀的程序员,十分优秀!