Merge branch 'cassandra-3.11' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ffde38a2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ffde38a2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ffde38a2 Branch: refs/heads/trunk Commit: ffde38a2567517da780c0411b0338d5a445ea551 Parents: f5adeeb 68f8966 Author: Benedict Elliott Smith <[email protected]> Authored: Fri Aug 24 15:49:02 2018 +0100 Committer: Benedict Elliott Smith <[email protected]> Committed: Fri Aug 24 15:49:02 2018 +0100 ---------------------------------------------------------------------- .../cassandra/utils/SortedBiMultiValMap.java | 35 +++----------------- 1 file changed, 5 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ffde38a2/src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java index 368d3f5,f628061..7b75fad --- a/src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java +++ b/src/java/org/apache/cassandra/utils/SortedBiMultiValMap.java @@@ -17,7 -17,8 +17,7 @@@ */ package org.apache.cassandra.utils; - import java.util.Comparator; + import java.util.Collection; -import java.util.Comparator; import java.util.SortedMap; import java.util.TreeMap; @@@ -36,40 -40,41 +36,15 @@@ public class SortedBiMultiValMap<K, V> return new SortedBiMultiValMap<K, V>(new TreeMap<K,V>(), TreeMultimap.<V, K>create()); } -- public static <K, V> SortedBiMultiValMap<K, V> create(Comparator<K> keyComparator, Comparator<V> valueComparator) -- { -- if (keyComparator == null) -- keyComparator = defaultComparator(); -- if (valueComparator == null) -- valueComparator = defaultComparator(); -- return new SortedBiMultiValMap<K, V>(new TreeMap<K,V>(keyComparator), TreeMultimap.<V, K>create(valueComparator, keyComparator)); -- } -- public static <K extends Comparable<K>, V extends Comparable<V>> SortedBiMultiValMap<K, V> create(BiMultiValMap<K, V> map) { SortedBiMultiValMap<K, V> newMap = SortedBiMultiValMap.<K,V>create(); - copy(map, newMap); - return newMap; - } - - public static <K, V> SortedBiMultiValMap<K, V> create(BiMultiValMap<K, V> map, Comparator<K> keyComparator, Comparator<V> valueComparator) - { - SortedBiMultiValMap<K, V> newMap = create(keyComparator, valueComparator); - copy(map, newMap); - return newMap; - } - - private static <K, V> void copy(BiMultiValMap<K, V> map, BiMultiValMap<K, V> newMap) - { newMap.forwardMap.putAll(map); - newMap.reverseMap.putAll(map.inverse()); - return newMap; - } - - public static <K, V> SortedBiMultiValMap<K, V> create(BiMultiValMap<K, V> map, Comparator<K> keyComparator, Comparator<V> valueComparator) - { - SortedBiMultiValMap<K, V> newMap = create(keyComparator, valueComparator); - newMap.forwardMap.putAll(map); - newMap.reverseMap.putAll(map.inverse()); + // Put each individual TreeSet instead of Multimap#putAll(Multimap) to get linear complexity + // See CASSANDRA-14660 + for (Entry<V, Collection<K>> entry : map.inverse().asMap().entrySet()) + newMap.reverseMap.putAll(entry.getKey(), entry.getValue()); + return newMap; } - @SuppressWarnings("unchecked") -- private static <T> Comparator<T> defaultComparator() -- { - return new Comparator<T>() - { - @SuppressWarnings("unchecked") - public int compare(T o1, T o2) - { - return ((Comparable<T>) o1).compareTo(o2); - } - }; - return DEFAULT_COMPARATOR; -- } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
