Details
-
Improvement
-
Status: Resolved
-
Trivial
-
Resolution: Fixed
-
1.12.0
Description
int h = hash; if (h == 0) { byte[] bytes = this.bytes; int length = this.length; for (int i = 0; i < length; i++) { h = h * 31 + bytes[i]; } this.hash = h; }
If this is an empty string, the value of "h" will always be zero, and therefore will not be cached correctly. An empty string will try to re-calculate the hash every time. Instead, make "h" default to 1 to avoid this condition. This change also makes the hash function equivalent to the JDK hash function.