@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { HashingStrategy<? super K> strategy = (HashingStrategy<? super K>) in.readObject(); int size = in.readInt(); MutableMap<K, V> deserializedMap = UnifiedMapWithHashingStrategy.newMap(strategy); for (int i = 0; i < size; i++) { deserializedMap.put((K) in.readObject(), (V) in.readObject()); } this.map = deserializedMap.toImmutable(); }
/** * Return a new map swapping key-value for value-key. * If the original map contains entries with the same value, the result mapping is undefined, * in that the last entry applied wins (the order of application is undefined). */ public static <K, V> MutableMap<V, K> reverseMapping(Map<K, V> map) { MutableMap<V, K> reverseMap = UnifiedMap.newMap(map.size()); MapIterate.forEachKeyValue(map, (sourceKey, sourceValue) -> reverseMap.put(sourceValue, sourceKey)); return reverseMap; }
@TearDown(Level.Iteration) public void tearDown() { map = new HashMap<>(size); iterableMap = new HashedMap<>(size); mutableMap = UnifiedMap.newMap(size); for (int i = 0; i < size; i++) { map.put(i, i); mutableMap.put(i, i); iterableMap.put(i, i); } }
@Override public <R extends Collection<V>> MutableMap<K, R> toMap(Function0<R> collectionFactory) { MutableMap<K, R> result = (MutableMap<K, R>) this.createMapWithKeyCount(this.map.size()); this.map.forEachKeyValue((key, collection) -> { R mutableCollection = collectionFactory.value(); mutableCollection.addAll(collection); result.put(key, mutableCollection); }); return result; }
@Override public MutableMap<K, RichIterable<V>> toMap() { MutableMap<K, RichIterable<V>> result = (MutableMap<K, RichIterable<V>>) (MutableMap<?, ?>) this.map.newEmpty(); this.map.forEachKeyValue((key, collection) -> { MutableCollection<V> mutableCollection = collection.newEmpty(); mutableCollection.addAll(collection); result.put(key, mutableCollection); }); return result; }
@Override public ImmutableListMultimap<K, V> toImmutable() { MutableMap<K, ImmutableList<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, list) -> map.put(key, list.toImmutable())); return new ImmutableListMultimapImpl<>(map); }
@Override public ImmutableSetMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSet<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, set) -> map.put(key, set.toImmutable())); return new ImmutableSetMultimapImpl<>(map); }
@Override public <R extends Collection<V>> MutableMap<K, R> toMap(Function0<R> collectionFactory) { MutableMap<K, R> result = UnifiedMap.newMap(); this.map.forEachKeyValue((key, iterable) -> { R newCollection = collectionFactory.value(); Iterate.addAllTo(iterable, newCollection); result.put(key, newCollection); }); return result; }
@Override public ImmutableListMultimap<K, V> toImmutable() { MutableMap<K, ImmutableList<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, list) -> map.put(key, list.toImmutable())); return new ImmutableListMultimapImpl<>(map); }
@Override public ImmutableBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableBagMultimapImpl<>(map); }
@Override public ImmutableBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableBagMultimapImpl<>(map); }
@Override public ImmutableSetMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSet<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, set) -> map.put(key, set.toImmutable())); return new ImmutableSetMultimapImpl<>(map); }
@Override public ImmutableSortedBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableSortedBagMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableSortedBagMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableSortedBagMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableSortedBagMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedSetMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedSet<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, set) -> map.put(key, set.toImmutable())); return new ImmutableSortedSetMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableSortedBagMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedSetMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedSet<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, set) -> map.put(key, set.toImmutable())); return new ImmutableSortedSetMultimapImpl<>(map, this.comparator()); }
@Override public ImmutableSortedBagMultimap<K, V> toImmutable() { MutableMap<K, ImmutableSortedBag<V>> map = UnifiedMap.newMap(); this.map.forEachKeyValue((key, bag) -> map.put(key, bag.toImmutable())); return new ImmutableSortedBagMultimapImpl<>(map, this.comparator()); }