如何为庞大的字符串列表计算好的哈希码?

Boh*_*dan 7 java string hash performance hashcode

在一次传递中基于这些字符串的值计算哈希码的最佳方法是什么?

好的我的意思是它需要:

1 - fast:我需要获取大字符串(10 ^ 3..10 ^ 8项)的短字符串的哈希码.

2 - 识别整个数据列表这么多列表可能只有几个不同的字符串必须有不同的哈希码

怎么用Java做?

也许有一种方法可以使用现有的字符串哈希码,但如何合并为单独的字符串计算的许多哈希码?

谢谢.

man*_*rid 10

为您创建一个占位符类,然后使用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() );
    }
}
Run Code Online (Sandbox Code Playgroud)

如果集合本身是不可变的,您可以计算一次哈希并将其存储以便重复使用.