com.gs.collections.api.map.MapIterable Maven / Gradle / Ivy
/*
* Copyright 2015 Goldman Sachs.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gs.collections.api.map;
import java.util.Map;
import com.gs.collections.api.RichIterable;
import com.gs.collections.api.block.function.Function;
import com.gs.collections.api.block.function.Function0;
import com.gs.collections.api.block.function.Function2;
import com.gs.collections.api.block.predicate.Predicate2;
import com.gs.collections.api.block.procedure.Procedure;
import com.gs.collections.api.block.procedure.Procedure2;
import com.gs.collections.api.multimap.Multimap;
import com.gs.collections.api.tuple.Pair;
/**
* A Read-only Map API, with the minor exception inherited from java.lang.Iterable. The method map.iterator().remove()
* will throw an UnsupportedOperationException.
*/
public interface MapIterable extends RichIterable
{
/**
* @see Map#get(Object)
*/
V get(Object key);
/**
* @see Map#containsKey(Object)
*/
boolean containsKey(Object key);
/**
* @see Map#containsValue(Object)
*/
boolean containsValue(Object value);
/**
* Calls the procedure with each value of the map.
*
* Set<String> result = UnifiedSet.newSet();
* MutableMap<Integer, String> map = this.newMapWithKeysValues(1, "One", 2, "Two", 3, "Three", 4, "Four");
* map.forEachValue(new CollectionAddProcedure<String>(result));
* Verify.assertSetsEqual(UnifiedSet.newSetWith("One", "Two", "Three", "Four"), result);
*
*/
void forEachValue(Procedure super V> procedure);
/**
* Executes the Procedure for each value of the map and returns {@code this}.
*
*
e.g.
* return peopleByCity.tap(new Procedure()
* {
* public void value(Person person)
* {
* LOGGER.info(person.getName());
* }
* });
*
*
* @see #forEach(Procedure)
* @since 6.0
*/
MapIterable tap(Procedure super V> procedure);
/**
* Calls the {@code procedure} with each key of the map.
*
* final Collection<Integer> result = new ArrayList<Integer>();
* MutableMap<Integer, String> map = this.newMapWithKeysValues(1, "1", 2, "2", 3, "3");
* map.forEachKey(new CollectionAddProcedure<Integer>(result));
* Verify.assertContainsAll(result, 1, 2, 3);
*
*/
void forEachKey(Procedure super K> procedure);
/**
* Calls the {@code procedure} with each key-value pair of the map.
*
* final Collection<String> collection = new ArrayList<String>();
* MutableMap<Integer, String> map = this.newMapWithKeysValues(1, "One", 2, "Two", 3, "Three");
* map.forEachKeyValue(new Procedure2<Integer, String>()
* {
* public void value(final Integer key, final String value)
* {
* collection.add(String.valueOf(key) + value);
* }
* });
* Verify.assertContainsAll(collection, "1One", "2Two", "3Three");
*
*/
void forEachKeyValue(Procedure2 super K, ? super V> procedure);
/**
* Return the MapIterable that is obtained by flipping the direction of this map and making the associations
* from value to key.
*
* MapIterable map = this.newMapWithKeysValues(1, "1", 2, "2", 3, "3");
* MapIterable result = map.flipUniqueValues();
* Assert.assertTrue(result.equals(UnifiedMap.newWithKeysValues("1", 1, "2", 2, "3", 3)));
*
*
* @throws IllegalStateException if the MapIterable contains duplicate values.
* @since 5.0
*/
MapIterable flipUniqueValues();
/**
* Return the value in the Map that corresponds to the specified key, or if there is no value at the key, return the
* result of evaluating the specified Function0.
*/
V getIfAbsent(K key, Function0 extends V> function);
/**
* Return the value in the Map that corresponds to the specified key, or if there is no value at the key, return {@code value}.
*/
V getIfAbsentValue(K key, V value);
/**
* Return the value in the Map that corresponds to the specified key, or if there is no value at the key, return the
* result of evaluating the specified function and parameter.
*/
© 2015 - 2025 Weber Informatics LLC | Privacy Policy