一次根据这些字符串的值计算哈希码的最佳方法是什么?
好的,我的意思是它需要:
1 - 快速:我需要获取大量短字符串列表(10^3..10^8 项)的哈希码。
2 - 识别整个数据列表,因此可能只有几个不同字符串的列表必须具有不同的哈希码
如何在 Java 中做到这一点?
也许有一种方法可以使用现有的字符串哈希码,但是如何合并为单独的字符串计算的许多哈希码?
谢谢你。
一次根据这些字符串的值计算哈希码的最佳方法是什么?
好的,我的意思是它需要:
1 - 快速:我需要获取大量短字符串列表(10^3..10^8 项)的哈希码。
2 - 识别整个数据列表,因此可能只有几个不同字符串的列表必须具有不同的哈希码
如何在 Java 中做到这一点?
也许有一种方法可以使用现有的字符串哈希码,但是如何合并为单独的字符串计算的许多哈希码?
谢谢你。
为您的字符串创建一个占位符类,然后使用CRC32 类。它简单快捷:
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() );
}
}
如果集合本身是不可变的,您可以计算一次哈希并将其存储以供后期重用。