hashCode() value changes between executions

hashcode, java, serialization

Solution

This works because hashtables are not serialized as hashtables. They are serialized in a custom way. So when deserialized, the hashtable will be rebuilt using the new hashcodes.

Problem

hashCode of an object has to be consistent for that object throughout one execution of the application-- for any object o, o.hashCode() should return the same int value. However, this doesn't have to be from one run-time to another: o.hashCode() can return some other value and this is perfectly alright by the specs. HashMap calculates the right bucked based on the hashCode value. My Q is: how is this value change between one session to another handled? Does serialization have features to handle this? So, suppose I built a hash and stored it on the disk. 2 weeks after, I invoked the application and am running it. I'm looking up an object in the hash. By these, the hashCode of this object is/can be now different than before and I wont be able to find it although it is there in the hash.

Original source