--- old/make/jdk/src/classes/build/tools/tzdb/TzdbZoneRulesCompiler.java 2018-09-18 10:34:46.145975973 -0700 +++ new/make/jdk/src/classes/build/tools/tzdb/TzdbZoneRulesCompiler.java 2018-09-18 10:34:45.781968779 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -65,8 +65,6 @@ import java.text.ParsePosition; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; @@ -76,6 +74,7 @@ import java.util.regex.Matcher; import java.util.regex.MatchResult; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * A compiler that reads a set of TZDB time-zone files and builds a single @@ -256,8 +255,10 @@ for (String regionId : regionArray) { out.writeUTF(regionId); } - // rules -- hashset -> remove the dup - List rulesList = new ArrayList<>(new HashSet<>(builtZones.values())); + // rules -- remove the dup + List rulesList = builtZones.values().stream() + .distinct() + .collect(Collectors.toList()); out.writeShort(rulesList.size()); ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); for (ZoneRules rules : rulesList) { --- old/make/jdk/src/classes/build/tools/tzdb/TzdbZoneRulesProvider.java 2018-09-18 10:34:47.307998940 -0700 +++ new/make/jdk/src/classes/build/tools/tzdb/TzdbZoneRulesProvider.java 2018-09-18 10:34:46.963992141 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,8 +33,6 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -43,7 +41,7 @@ import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; -import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; import java.time.*; import java.time.Year; import java.time.chrono.IsoChronology; @@ -131,18 +129,18 @@ /** * Zone region to rules mapping */ - private final Map zones = new ConcurrentHashMap<>(); + private final Map zones = new ConcurrentSkipListMap<>(); /** * compatibility list */ - private static HashSet excludedZones; + private static Set excludedZones; static { // (1) exclude EST, HST and MST. They are supported // via the short-id mapping // (2) remove UTC and GMT // (3) remove ROC, which is not supported in j.u.tz - excludedZones = new HashSet<>(10); + excludedZones = new TreeSet<>(); excludedZones.add("EST"); excludedZones.add("HST"); excludedZones.add("MST"); @@ -151,8 +149,8 @@ excludedZones.add("ROC"); } - private Map links = new HashMap<>(150); - private Map> rules = new HashMap<>(500); + private Map links = new TreeMap<>(); + private Map> rules = new TreeMap<>(); private void load(List files) throws IOException {