diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java index b5110dde8b7..e1631b4daf5 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/locale/XLikelySubtags.java @@ -30,31 +30,12 @@ public class XLikelySubtags { return DEFAULT; } - @SuppressWarnings("unchecked") - static abstract class Maker { - abstract V make(); - - public V getSubtable(Map langTable, final K language) { - V scriptTable = langTable.get(language); - if (scriptTable == null) { - langTable.put(language, scriptTable = (V) make()); - } - return scriptTable; + private static Map getSubtable(Map> table, final K language) { + Map subTable = table.get(language); + if (subTable == null) { + table.put(language, subTable = new TreeMap<>()); } - - static final Maker HASHMAP = new Maker() { - @Override - public Map make() { - return new HashMap<>(); - } - }; - - static final Maker TREEMAP = new Maker() { - @Override - public Map make() { - return new TreeMap<>(); - } - }; + return subTable; } public static class Aliases { @@ -157,7 +138,7 @@ public class XLikelySubtags { // throw new ICUException("invalid language id"); } - private static final HashMap pseudoReplacements = new HashMap(11); + private static final HashMap pseudoReplacements = new HashMap<>(11); // Note code in XLocaledistance.java handle pseudo-regions XA, XB, and XC, making them // very distant from any other locale. Similarly, it establishes that any of the @@ -261,7 +242,7 @@ public class XLikelySubtags { final Map>> langTable; public XLikelySubtags() { - this(getDefaultRawData(), true); + this(getDefaultRawData()); } private static Map getDefaultRawData() { @@ -274,11 +255,11 @@ public class XLikelySubtags { return rawData; } - public XLikelySubtags(Map rawData, boolean skipNoncanonical) { - this.langTable = init(rawData, skipNoncanonical); + public XLikelySubtags(Map rawData) { + this.langTable = init(rawData); } - private Map>> init(final Map rawData, boolean skipNoncanonical) { + private Map>> init(final Map rawData) { // prepare alias info. We want a mapping from the canonical form to all aliases //Multimap canonicalToAliasLanguage = HashMultimap.create(); @@ -289,8 +270,7 @@ public class XLikelySubtags { //Multimap canonicalToAliasRegion = HashMultimap.create(); // getAliasInfo(REGION_ALIASES, canonicalToAliasRegion); - Maker maker = Maker.TREEMAP; - Map>> result = maker.make(); + Map>> result = new TreeMap<>(); // Splitter bar = Splitter.on('_'); // int last = -1; // set the base data @@ -405,8 +385,8 @@ public class XLikelySubtags { } private void set(Map>> langTable, final String language, final String script, final String region, LSR newValue) { - Map> scriptTable = Maker.TREEMAP.getSubtable(langTable, language); - Map regionTable = Maker.TREEMAP.getSubtable(scriptTable, script); + Map> scriptTable = getSubtable(langTable, language); + Map regionTable = getSubtable(scriptTable, script); // LSR oldValue = regionTable.get(region); // if (oldValue != null) { // int debug = 0;