I'd like to contribute (the start of) a test that checks that static HashMaps are not oversized. I suggest using that consistently for static HashMaps (and ArrayLists?) throughout the JDK:
import java.lang.reflect.*; import java.util.*; @SuppressWarnings({"unchecked", "rawtypes"}) public class StaticMapSize { static int tableLength(HashMap map) throws Throwable { Field tableField = HashMap.class.getDeclaredField("table"); tableField.setAccessible(true); return ((Object[]) tableField.get(map)).length; } public static void main(String[] args) throws Throwable { Class<?>[] klazzes = Class.forName("java.lang.Character").getDeclaredClasses(); for (Class<?> klazz : klazzes) { for (Field field : klazz.getDeclaredFields()) { field.setAccessible(true); if (Modifier.isStatic(field.getModifiers())) { Object x = field.get(null); if (x instanceof HashMap) { System.out.println(field); HashMap map = (HashMap) x; HashMap copy = new HashMap(map); if (tableLength(map) != tableLength(copy)) { String msg = String.format ("map %s has excess capacity: need %d; use %d%n", field.toString(), tableLength(copy), tableLength(map)); throw new AssertionError(msg); } } } } } } }