3 ms·
The hash32 implementation in Java 7 was not intended to fix the case where the actual hash value was zero, nor did it have an impact on that case as the hash32
by Ironlink 11y ago
The hash32 implementation in Java 7 was not intended to fix the case where the actual hash value was zero, nor did it have an impact on that case as the hash32 value was stored in a separate field.
It was made to decrease the number of hash value collisions in large data structures (hash maps and such). Its replacement is described here: http://openjdk.java.net/jeps/180 http://openjdk.java.net/jeps/180 . Given that most Strings never end up in a large collection, allocating an extra 4 bytes for every one of them was a waste.
This post has been edited once for factual correctness.
- mtdewcmu 11y agoIt's hard to imagine a situation where the hash function would be so slow as to justify adding 4 bytes to every string.
- joosters 11y agoIf your strings are large, then calculating the hash will take time AND the extra 4 bytes for hash storage will be minimal extra overhead. You can easily find good & bad cases for all of these string implementations. They all have tradeoffs.