我打算序列化和反序列化键是字符串的hashmap。将键映射为字符串的序列化和反序列化映射
从Josh Bloch的Effective Java中,我了解以下内容。 P.222
例如,考虑散列表的情况。物理 表示是包含键值 条目的一系列散列桶。一个入口放入哪个桶是密钥的编码的功能,通常不能保证JVM实现到JVM实现的相同 。实际上,它甚至不会保证与运行相同的JVM 实现中的运行相同。因此接受默认的序列化表格为 哈希表将构成一个严重的错误。反序列化哈希表可能会产生一个对象,其不变量 严重损坏。
我的问题是: 1)一般情况下,会忽略equals和重点班的地图的哈希码解决这个问题,图上可以正确恢复? 2)如果我的键是一个字符串,并且String类已经覆盖了hashCode()方法,那么我是否仍然有上述问题。 (我看到一个错误,这使得我认为这可能仍然是一个问题,即使密钥是带重写hashCode的字符串。)
3)以前,我通过序列化一个条目数组(键,值),当反序列化时,我会重建地图。我想知道是否有更好的方法。
4)如果问题1和2的答案仍然不能保证,有人可以解释为什么吗?如果hashCodes是相同的,它们会跨越JVM到同一个存储桶吗?
感谢,格雷斯
如果您试图序列化映射,则需要确保整个对象树是可序列化的,包括键,值和映射实现。 – cs80 2010-04-30 21:51:46
p。 299在第二版 – tiktak 2015-01-11 15:39:39