Java 如何为庞大的字符串列表计算好的哈希代码?
根据这些字符串的值一次计算哈希代码的最佳方法是什么 我的意思是,它需要: 1-fast:我需要获取大量短字符串列表(10^3..10^8项)的哈希代码 2-识别整个数据列表,因此许多可能只有两个不同字符串的列表必须具有不同的哈希代码 如何在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
谢谢。为字符串创建占位符类,然后使用。它简单快捷:
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()我想。