COLLECTIONS-602: Improve efficiency of DefaultedMap.get. Applying patch provided by John Mark.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@1796031 13f79535-47bb-0310-9956-ffa450edef68 Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/8f346f9f Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/8f346f9f Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/8f346f9f Branch: refs/heads/master Commit: 8f346f9f1263b2fd5923abc0956134df15fd9325 Parents: 9f0d589 Author: Bruno P. Kinoshita <[email protected]> Authored: Wed May 24 09:32:48 2017 +0000 Committer: Bruno P. Kinoshita <[email protected]> Committed: Wed May 24 09:32:48 2017 +0000 ---------------------------------------------------------------------- src/changes/changes.xml | 3 +++ .../org/apache/commons/collections4/map/DefaultedMap.java | 9 ++++----- 2 files changed, 7 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/8f346f9f/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 9b39615..bf23905 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -21,6 +21,9 @@ </properties> <body> <release version="4.2" date="YYYY-MM-DD" description="New features"> + <action issue="COLLECTIONS-602" dev="kinow" type="update" due-to="John Mark"> + Improve efficiency of DefaultedMap.get + </action> <action issue="COLLECTIONS-603" dev="kinow" type="fix" due-to="Artem Konovalov"> Small improvements for generics, conditional statements, and warnings suppressions. </action> http://git-wip-us.apache.org/repos/asf/commons-collections/blob/8f346f9f/src/main/java/org/apache/commons/collections4/map/DefaultedMap.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/collections4/map/DefaultedMap.java b/src/main/java/org/apache/commons/collections4/map/DefaultedMap.java index 17605fd..7c0d783 100644 --- a/src/main/java/org/apache/commons/collections4/map/DefaultedMap.java +++ b/src/main/java/org/apache/commons/collections4/map/DefaultedMap.java @@ -198,11 +198,10 @@ public class DefaultedMap<K, V> extends AbstractMapDecorator<K, V> implements Se @Override @SuppressWarnings("unchecked") public V get(final Object key) { - // create value for key if key is not currently in the map - if (map.containsKey(key) == false) { - return value.transform((K) key); - } - return map.get(key); + V v; + return (((v = map.get(key)) != null) || map.containsKey(key)) + ? v + : value.transform((K) key); } // no need to wrap keySet, entrySet or values as they are views of
