Package it.tidalwave.util
Interface TypeSafeMultiMap
-
- All Superinterfaces:
java.lang.Iterable<java.util.Map.Entry<Key<?>,java.util.Collection<?>>>
public interface TypeSafeMultiMap extends java.lang.Iterable<java.util.Map.Entry<Key<?>,java.util.Collection<?>>>
A map that is type safe, i.e. the pairs (key, value) are type-checked, and can contain multiple values, i.e. it's associated to collections (key, collection of values). It's immutable.- Author:
- Fabrizio Giudici
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.Map<Key<?>,java.util.Collection<?>>
asMap()
Returns the contents as a plainMap
.boolean
containsKey(Key<?> key)
Checks whether a pair has been stored.java.util.Set<java.util.Map.Entry<Key<?>,java.util.Collection<?>>>
entrySet()
Returns a set of all the contained (key, value) pairs.void
forEach(java.util.function.BiConsumer<? super Key<?>,? super java.util.Collection<?>> action)
Performs the given action on all the pairs (key, value) contained in this map.<T> java.util.Collection<T>
get(Key<T> key)
Returns a value given its key.java.util.Set<Key<?>>
keySet()
Returns a set of all the contained keys.static TypeSafeMultiMap
newInstance()
Creates a new empty instance.static TypeSafeMultiMap
ofCloned(java.util.Map<? extends Key<?>,? extends java.util.Collection<?>> map)
Creates an instance cloning the given map.int
size()
Returns the size of this map.java.util.Collection<java.util.Collection<?>>
values()
Returns a set of all the contained values.<T> TypeSafeMultiMap
with(Key<T> key, T value)
Creates a new instance with an additional pair (key, value).
-
-
-
Method Detail
-
get
@Nonnull <T> java.util.Collection<T> get(@Nonnull Key<T> key)
Returns a value given its key.- Type Parameters:
T
- the type- Parameters:
key
- the key- Returns:
- the value as a
Collection
-
containsKey
boolean containsKey(@Nonnull Key<?> key)
Checks whether a pair has been stored.- Parameters:
key
- the key- Returns:
true
if the pair is present
-
keySet
@Nonnull java.util.Set<Key<?>> keySet()
Returns a set of all the contained keys.- Returns:
- the keys as a mutable set
-
values
@Nonnull java.util.Collection<java.util.Collection<?>> values()
Returns a set of all the contained values.- Returns:
- the values as a mutable collection
- Since:
- 3.2-ALPHA-6
-
entrySet
@Nonnull java.util.Set<java.util.Map.Entry<Key<?>,java.util.Collection<?>>> entrySet()
Returns a set of all the contained (key, value) pairs.- Returns:
- the pairs as a mutable collection
- Since:
- 3.2-ALPHA-6
-
size
@Nonnegative int size()
Returns the size of this map.- Returns:
- the size
-
forEach
void forEach(@Nonnull java.util.function.BiConsumer<? super Key<?>,? super java.util.Collection<?>> action)
Performs the given action on all the pairs (key, value) contained in this map.- Parameters:
action
- the action- Since:
- 3.2-ALPHA-10
-
asMap
@Nonnull java.util.Map<Key<?>,java.util.Collection<?>> asMap()
Returns the contents as a plainMap
.- Returns:
- the contents as a mutable map
-
with
@Nonnull <T> TypeSafeMultiMap with(@Nonnull Key<T> key, @Nonnull T value)
Creates a new instance with an additional pair (key, value).- Type Parameters:
T
- the type- Parameters:
key
- the keyvalue
- the value- Returns:
- the new instance
- Since:
- 3.2-ALPHA-2
-
ofCloned
@Nonnull static TypeSafeMultiMap ofCloned(@Nonnull java.util.Map<? extends Key<?>,? extends java.util.Collection<?>> map)
Creates an instance cloning the given map.- Parameters:
map
- the map to clone- Returns:
- the new instance
- Since:
- 3.2-ALPHA-2
-
newInstance
@Nonnull static TypeSafeMultiMap newInstance()
Creates a new empty instance.- Returns:
- the new instance
- Since:
- 3.2-ALPHA-2
-
-