Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为庞大的字符串列表计算好的哈希代码?_Java_String_Performance_Hash_Hashcode - Fatal编程技术网

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

Java 如何为庞大的字符串列表计算好的哈希代码?,java,string,performance,hash,hashcode,Java,String,Performance,Hash,Hashcode,根据这些字符串的值一次计算哈希代码的最佳方法是什么 我的意思是,它需要: 1-fast:我需要获取大量短字符串列表(10^3..10^8项)的哈希代码 2-识别整个数据列表,因此许多可能只有两个不同字符串的列表必须具有不同的哈希代码 如何在Java中实现它 也许有一种方法可以使用现有的字符串哈希代码,但是如何合并为单独字符串计算的许多哈希代码呢 谢谢。为字符串创建占位符类,然后使用。它简单快捷: import java.util.zip.CRC32; public class HugeStri

根据这些字符串的值一次计算哈希代码的最佳方法是什么

我的意思是,它需要:

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

2-识别整个数据列表,因此许多可能只有两个不同字符串的列表必须具有不同的哈希代码

如何在Java中实现它

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


谢谢。

为字符串创建占位符类,然后使用。它简单快捷:

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() );
    }
}
import java.util.zip.CRC32;
公营课巨星系列{
私人收藏字符串;
公共HugeStringCollection(集合字符串){
this.strings=字符串;
}
公共int hashCode(){
CRC32 crc=新的CRC32();
for(字符串:字符串){
crc.update(string.getBytes())
}
返回(int)(crc.getValue());
}
}

如果集合本身是不可变的,则可以计算一次散列并将其存储起来以供以后重用。

您希望散列代码用于什么?您只需要一个散列,还是每个字符串一个散列?您想要像java已经在返回int的字符串上有
hashCode()
方法这样的散列代码值,还是像MD5 digest那样的散列值?为什么不使用内置的
hashCode()
方法<代码>列表扩展
抽象列表
的实现从其元素的哈希代码中计算其值。哈希代码必须是顺序敏感的吗?即
{a”,“b”,“c”}
的散列码应该与
{a”,“c”,“b”}
的散列码相同还是不同?这个问题太模糊了。。。。而OP并没有澄清这一点。是时候关闭它了……多年来,它已广泛应用于文件处理中,例如在ZIP中compression@mantrid如何将其转换为字符数组列表?我想我们没有角色的getBytes<代码>字符串.join(myArrayList).getBytes()我想。