[12] RFR: 8215194: Initial size of UnicodeBlock map is incorrect
Naoto Sato
naoto.sato at oracle.com
Tue Dec 11 18:59:48 UTC 2018
Hi Ivan,
Thank you for the review.
On 12/11/18 10:49 AM, Ivan Gerasimov wrote:
> OptimalCapacity.ofHashMap uses the initialCapacity to verify that a
> HashMap created with that initialCapacity will not reallocate its
> internal array after inserting the factual number of elements.
>
> So, if one day the number of entities is increased, but the constant
> NUM_ENTITIES is not updated, then the test will catch it.
Actually the reason I am fixing it is that, the test did not detect the
discrepancy with Unicode 11 upgrade, where it just increased the entry
numbers by the true block increases (11 blocks), without adding their
aliases.
---
--- a/src/java.base/share/classes/java/lang/Character.java Wed Nov 14
13:15:54 2018 +0100
+++ b/src/java.base/share/classes/java/lang/Character.java Wed Nov 21
14:24:31 2018 +0530
@@ -43,7 +43,7 @@
* a character's category (lowercase letter, digit, etc.) and for
converting
* characters from uppercase to lowercase and vice versa.
* <p>
- * Character information is based on the Unicode Standard, version 10.0.0.
+ * Character information is based on the Unicode Standard, version 11.0.0.
* <p>
* The methods and data of class {@code Character} are defined by
* the information in the <i>UnicodeData</i> file that is part of the
@@ -681,11 +681,11 @@
*/
public static final class UnicodeBlock extends Subset {
/**
- * 638 - the expected number of entities
+ * 649 - the expected number of entities
* 0.75 - the default load factor of HashMap
*/
private static Map<String, UnicodeBlock> map =
- new HashMap<>((int)(638 / 0.75f + 1.0f));
+ new HashMap<>((int)(649 / 0.75f + 1.0f));
/**
* Creates a UnicodeBlock with the given identifier name.
---
However, the HashMap allocates the entry size to the nearest power of
two number, i.e., 1024 for both numbers 649 and 667. Thus the test
passes even if there is discrepancy.
Naoto
More information about the core-libs-dev
mailing list