diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/query/profile/ChainedMap.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/query/profile/ChainedMap.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/ChainedMap.java b/container-search/src/main/java/com/yahoo/search/query/profile/ChainedMap.java index 7da5441129c..3ec9a3c41b8 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/ChainedMap.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/ChainedMap.java @@ -23,7 +23,17 @@ class ChainedMap<K, V> implements Map<K, V> { @Override public int size() { - return keySet().size(); + return (primary.size() >= secondary.size()) + ? countUnique(primary, secondary) + : countUnique(secondary, primary); + } + + private int countUnique(Map<K, V> large, Map<K,V> small) { + int size = large.size(); + for (K key : small.keySet()) { + if ( ! large.containsKey(key)) size++; + } + return size; } @Override |