< prev index next >

test/java/lang/Character/UnicodeBlock/NonOptimalMapSize.java

Print this page
rev 12008 : [mq]: XXXXXXX-Remove-INITIAL_CAPACITY-constant

*** 40,57 **** Map<?,?> map = (Map<?,?>)mapField.get(null); if (!map.getClass().equals(HashMap.class)) { throw new RuntimeException( "Character.UnicodeBlock.map is expected to be HashMap"); } - int mapSize = map.size(); ! Field sizeField = ubCls.getDeclaredField("INITIAL_CAPACITY"); ! sizeField.setAccessible(true); ! int INITIAL_CAPACITY = sizeField.getInt(null); // Construct a HashMap with specified initial capacity ! HashMap<Object,Object> map1 = new HashMap<>(INITIAL_CAPACITY); Class<?> hmCls = HashMap.class; Field tableField = hmCls.getDeclaredField("table"); tableField.setAccessible(true); // ... and fill it up map1.put(new Object(), new Object()); --- 40,61 ---- Map<?,?> map = (Map<?,?>)mapField.get(null); if (!map.getClass().equals(HashMap.class)) { throw new RuntimeException( "Character.UnicodeBlock.map is expected to be HashMap"); } ! // This is the initial size of Character.UnicodeBlock.map ! // See src/java.base/share/classes/java/lang/Character.java ! int initialCapacity = (int)(510 / 0.75f + 1.0f); ! ! // We will check that the capacity was sufficient: ! // - create a new HashMap with this initial capacity ! // - insert map.size() elements in it ! // - check that the internal storage wasn't reallocated // Construct a HashMap with specified initial capacity ! HashMap<Object,Object> map1 = new HashMap<>(initialCapacity); Class<?> hmCls = HashMap.class; Field tableField = hmCls.getDeclaredField("table"); tableField.setAccessible(true); // ... and fill it up map1.put(new Object(), new Object());
< prev index next >