加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:59:31 所属栏目:Java 来源:网络整理
导读:在一次传递中基于这些字符串的值计算哈希码的最佳方法是什么? 好的我的意思是它需要: 1 – fast:我需要获取大字符串(10 ^ 3..10 ^ 8项)的短字符串的哈希码. 2 – 识别整个数据列表这么多列表可能只有几个不同的字符串必须有不同的哈希码 怎么用Java做?
在一次传递中基于这些字符串的值计算哈希码的最佳方法是什么?

好的我的意思是它需要:

1 – fast:我需要获取大字符串(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() );
    }
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读