All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.collections.api.bimap.MutableBiMap Maven / Gradle / Ivy

There is a newer version: 12.0.0.M3
Show newest version
/*
 * Copyright (c) 2021 Goldman Sachs.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Eclipse Distribution License v. 1.0 which accompany this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 */

package org.eclipse.collections.api.bimap;

import java.util.Map;

import org.eclipse.collections.api.block.function.Function;
import org.eclipse.collections.api.block.function.Function0;
import org.eclipse.collections.api.block.function.Function2;
import org.eclipse.collections.api.block.predicate.Predicate;
import org.eclipse.collections.api.block.predicate.Predicate2;
import org.eclipse.collections.api.block.procedure.Procedure;
import org.eclipse.collections.api.factory.BiMaps;
import org.eclipse.collections.api.factory.Maps;
import org.eclipse.collections.api.map.MapIterable;
import org.eclipse.collections.api.map.MutableMap;
import org.eclipse.collections.api.map.MutableMapIterable;
import org.eclipse.collections.api.multimap.set.MutableSetMultimap;
import org.eclipse.collections.api.ordered.OrderedIterable;
import org.eclipse.collections.api.partition.set.PartitionMutableSet;
import org.eclipse.collections.api.set.MutableSet;
import org.eclipse.collections.api.tuple.Pair;

/**
 * A {@link BiMap} whose contents can be altered after initialization.
 *
 * @since 4.2
 */
public interface MutableBiMap extends BiMap, MutableMapIterable, Cloneable
{
    @Override
    MutableBiMap newEmpty();

    @Override
    MutableBiMap inverse();

    @Override
    MutableBiMap flipUniqueValues();

    @Override
    MutableSetMultimap flip();

    /**
     * Similar to {@link Map#put(Object, Object)}, except that it throws on the addition of a duplicate value.
     *
     * @throws IllegalArgumentException if the value already exists in the bimap.
     */
    @Override
    V put(K key, V value);

    /**
     * Similar to {@link #put(Object, Object)}, except that it quietly removes any existing entry with the same
     * value before putting the key-value pair.
     */
    V forcePut(K key, V value);

    @Override
    MutableBiMap asSynchronized();

    @Override
    MutableBiMap asUnmodifiable();

    MutableBiMap clone();

    @Override
    MutableBiMap tap(Procedure procedure);

    @Override
    MutableBiMap select(Predicate2 predicate);

    @Override
    MutableBiMap reject(Predicate2 predicate);

    @Override
     MutableBiMap collect(Function2> function);

    @Override
     MutableBiMap collectValues(Function2 function);

    @Override
    MutableSet select(Predicate predicate);

    @Override
    

MutableSet selectWith(Predicate2 predicate, P parameter); @Override MutableSet reject(Predicate predicate); @Override

MutableSet rejectWith(Predicate2 predicate, P parameter); @Override PartitionMutableSet partition(Predicate predicate); @Override

PartitionMutableSet partitionWith(Predicate2 predicate, P parameter); @Override MutableSet selectInstancesOf(Class clazz); /** * @deprecated in 8.0. Use {@link OrderedIterable#zip(Iterable)} instead. */ @Override @Deprecated MutableSet> zip(Iterable that); /** * @deprecated in 8.0. Use {@link OrderedIterable#zipWithIndex()} instead. */ @Override @Deprecated MutableSet> zipWithIndex(); @Override MutableSetMultimap groupBy(Function function); @Override MutableSetMultimap groupByEach(Function> function); @Override default MutableBiMap groupByUniqueKey(Function function) { return this.groupByUniqueKey(function, BiMaps.mutable.empty()); } /** * @since 11.0 */ @Override default MutableMap aggregateBy( Function groupBy, Function0 zeroValueFactory, Function2 nonMutatingAggregator) { return this.aggregateBy( groupBy, zeroValueFactory, nonMutatingAggregator, Maps.mutable.empty()); } /** * @since 11.0 */ @Override default MutableMap aggregateBy( Function keyFunction, Function valueFunction, Function0 zeroValueFactory, Function2 nonMutatingAggregator) { MutableMap map = Maps.mutable.empty(); this.forEachKeyValue((key, value) -> map.updateValueWith( keyFunction.valueOf(key), zeroValueFactory, nonMutatingAggregator, valueFunction.valueOf(value))); return map; } @Override MutableBiMap withKeyValue(K key, V value); @Override default MutableBiMap withMap(Map map) { this.putAll(map); return this; } @Override default MutableBiMap withMapIterable(MapIterable mapIterable) { this.putAllMapIterable(mapIterable); return this; } @Override MutableBiMap withAllKeyValues(Iterable> keyValues); @Override MutableBiMap withAllKeyValueArguments(Pair... keyValuePairs); @Override MutableBiMap withoutKey(K key); @Override MutableBiMap withoutAllKeys(Iterable keys); }