/** * Creates a new multimap that clones the provided map into an ImmutableMap. * * @param map place to store the mapping from each key to its corresponding values */ protected AbstractImmutableMultimap(MutableMap<K, C> map) { this(map.toImmutable()); }
/** * Creates a new multimap that clones the provided map into an ImmutableMap. * * @param map place to store the mapping from each key to its corresponding values */ protected AbstractImmutableMultimap(MutableMap<K, C> map) { this(map.toImmutable()); }
@Override public ImmutableMap<V, K> flipUniqueValues() { return MapIterate.flipUniqueValues(this).toImmutable(); }
@Override public <VV> ImmutableMap<VV, V> groupByUniqueKey(Function<? super V, ? extends VV> function) { MutableMap<VV, V> map = this.delegate.groupByUniqueKey(function); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateInPlaceBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Procedure2<? super VV, ? super V> mutatingAggregator) { MutableMap<K, VV> map = this.delegate.aggregateInPlaceBy(groupBy, zeroValueFactory, mutatingAggregator); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Function2<? super VV, ? super V, ? extends VV> nonMutatingAggregator) { MutableMap<K, VV> map = this.delegate.aggregateBy(groupBy, zeroValueFactory, nonMutatingAggregator); return map.toImmutable(); }
@Override public <VV> ImmutableMap<VV, V> groupByUniqueKey(Function<? super V, ? extends VV> function) { MutableMap<VV, V> map = this.delegate.groupByUniqueKey(function); return map.toImmutable(); }
@Override public <V> ImmutableMap<V, T> groupByUniqueKey(Function<? super T, ? extends V> function) { MutableMap<V, T> map = Iterate.groupByUniqueKey(this, function); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Function2<? super VV, ? super V, ? extends VV> nonMutatingAggregator) { MutableMap<K, VV> map = this.delegate.aggregateBy(groupBy, zeroValueFactory, nonMutatingAggregator); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateInPlaceBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Procedure2<? super VV, ? super V> mutatingAggregator) { MutableMap<K, VV> map = this.delegate.aggregateInPlaceBy(groupBy, zeroValueFactory, mutatingAggregator); return map.toImmutable(); }
@Override public <V> ImmutableMap<V, T> groupByUniqueKey(Function<? super T, ? extends V> function) { MutableMap<V, T> map = this.delegate.groupByUniqueKey(function); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateInPlaceBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Procedure2<? super VV, ? super V> mutatingAggregator) { MutableMap<K, VV> map = UnifiedMap.newMap(); this.forEach(new MutatingAggregationProcedure<V, K, VV>(map, groupBy, zeroValueFactory, mutatingAggregator)); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Function2<? super VV, ? super V, ? extends VV> nonMutatingAggregator) { MutableMap<K, VV> map = UnifiedMap.newMap(); this.forEach(new NonMutatingAggregationProcedure<V, K, VV>(map, groupBy, zeroValueFactory, nonMutatingAggregator)); return map.toImmutable(); }
@Override public <K2, V2> ImmutableMap<K2, V2> aggregateBy( Function<? super V, ? extends K2> groupBy, Function0<? extends V2> zeroValueFactory, Function2<? super V2, ? super V, ? extends V2> nonMutatingAggregator) { MutableMap<K2, V2> map = UnifiedMap.newMap(); this.forEach(new NonMutatingAggregationProcedure<>(map, groupBy, zeroValueFactory, nonMutatingAggregator)); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateInPlaceBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Procedure2<? super VV, ? super V> mutatingAggregator) { MutableMap<K, VV> map = UnifiedMap.newMap(); this.forEach(new MutatingAggregationProcedure<V, K, VV>(map, groupBy, zeroValueFactory, mutatingAggregator)); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Function2<? super VV, ? super V, ? extends VV> nonMutatingAggregator) { MutableMap<K, VV> map = UnifiedMap.newMap(); this.forEach(new NonMutatingAggregationProcedure<V, K, VV>(map, groupBy, zeroValueFactory, nonMutatingAggregator)); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Function2<? super VV, ? super V, ? extends VV> nonMutatingAggregator) { MutableMap<K, VV> map = UnifiedMap.newMap(); this.forEach(new NonMutatingAggregationProcedure<V, K, VV>(map, groupBy, zeroValueFactory, nonMutatingAggregator)); return map.toImmutable(); }
@Override public <K, VV> ImmutableMap<K, VV> aggregateBy(Function<? super V, ? extends K> groupBy, Function0<? extends VV> zeroValueFactory, Function2<? super VV, ? super V, ? extends VV> nonMutatingAggregator) { MutableMap<K, VV> map = UnifiedMap.newMap(); this.forEach(new NonMutatingAggregationProcedure<V, K, VV>(map, groupBy, zeroValueFactory, nonMutatingAggregator)); return map.toImmutable(); }
@Override public <R> ImmutableMap<K, R> collectValues(Function2<? super K, ? super V, ? extends R> function) { MutableMap<K, R> result = MapIterate.collectValues(this, function, UnifiedMapWithHashingStrategy.newMap(this.delegate.hashingStrategy(), this.delegate.size())); return result.toImmutable(); }
@Override public <K2, V2> ImmutableMap<K2, V2> collect(Function2<? super K, ? super V, Pair<K2, V2>> function) { MutableMap<K2, V2> collectedMap = UnifiedMap.newMap(this.size()); this.forEachKeyValue((key, value) -> collectedMap.add(function.value(key, value))); return collectedMap.toImmutable(); }