diff options
author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2022-04-18 17:41:43 -0500 |
---|---|---|
committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2022-04-18 17:41:43 -0500 |
commit | 40f7b6e806140fc2fc741c63c71f5ce97b4bd1d2 (patch) | |
tree | e43ce4a066da9714da5d7274a443e98b818e73a5 /src/main/java/sevenUnits/unit/UnitDatabase.java | |
parent | f0541a955b6e4b12d808cffec0874f50a004e8b9 (diff) |
Implemented one-way conversion, duplicate prefixes can now be hidden
Diffstat (limited to 'src/main/java/sevenUnits/unit/UnitDatabase.java')
-rw-r--r-- | src/main/java/sevenUnits/unit/UnitDatabase.java | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/main/java/sevenUnits/unit/UnitDatabase.java b/src/main/java/sevenUnits/unit/UnitDatabase.java index a4f0c44..71676a1 100644 --- a/src/main/java/sevenUnits/unit/UnitDatabase.java +++ b/src/main/java/sevenUnits/unit/UnitDatabase.java @@ -1160,16 +1160,16 @@ public final class UnitDatabase { } /** - * @return true if entry represents a removable duplicate entry of unitMap. + * @return true if entry represents a removable duplicate entry of map. * @since 2021-05-22 */ - static boolean isRemovableDuplicate(Map<String, Unit> unitMap, - Entry<String, Unit> entry) { - for (final Entry<String, Unit> e : unitMap.entrySet()) { + static <T> boolean isRemovableDuplicate(Map<String, T> map, + Entry<String, T> entry) { + for (final Entry<String, T> e : map.entrySet()) { final String name = e.getKey(); - final Unit value = e.getValue(); + final T value = e.getValue(); if (lengthFirstComparator.compare(entry.getKey(), name) < 0 - && Objects.equals(unitMap.get(entry.getKey()), value)) + && Objects.equals(map.get(entry.getKey()), value)) return true; } return false; @@ -2010,12 +2010,18 @@ public final class UnitDatabase { } /** + * @param includeDuplicates if false, duplicates are removed from the map * @return a map mapping prefix names to prefixes - * @since 2019-04-13 - * @since v0.2.0 + * @since 2022-04-18 + * @since v0.4.0 */ - public Map<String, UnitPrefix> prefixMap() { - return Collections.unmodifiableMap(this.prefixes); + public Map<String, UnitPrefix> prefixMap(boolean includeDuplicates) { + if (includeDuplicates) + return Collections.unmodifiableMap(this.prefixes); + else + return Collections.unmodifiableMap(ConditionalExistenceCollections + .conditionalExistenceMap(this.prefixes, + entry -> !isRemovableDuplicate(this.prefixes, entry))); } /** |