Package akka.util

Class TypedMultiMap<T,​K>


  • public class TypedMultiMap<T,​K>
    extends java.lang.Object
    An immutable multi-map that expresses the value type as a type function of the key type. Create it with a type constructor that expresses the relationship:

    
     trait Key { type Type = T }
     case class MyValue[T](...)
    
     // type function from Key to MyValue
     type KV[K <: Key] = MyValue[K#Type]
    
     val map = TypedMultiMap.empty[Key, KV]
    
     // a plain Int => String map would use this function:
     type plain[K <: Int] = String
    
     // a map T => T would use this function:
     type identity[T <: AnyRef] = T
     

    Caveat: using keys which take type parameters does not work due to conflicts with the existential interpretation of Key[_]. A workaround is to define a key type like above and provide a subtype that provides its type parameter as type member Type.

    • Constructor Summary

      Constructors 
      Constructor Description
      TypedMultiMap()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      TypedMultiMap<T,​K> $plus$plus​(TypedMultiMap<T,​K> other)
      Add all entries from the other map, overwriting existing entries.
      static <T,​K>
      TypedMultiMap<T,​K>
      empty()
      Obtain the empty map for the given key type and key–value type function.
      boolean equals​(java.lang.Object other)  
      scala.collection.immutable.Set<K> get​(T key)
      Obtain all mappings for the given key.
      int hashCode()  
      TypedMultiMap<T,​K> inserted​(T key, K value)
      Return a map that has the given value added to the mappings for the given key.
      TypedMultiMap<T,​K> keyRemoved​(T key)
      Return a map that has all mappings for the given key removed.
      scala.collection.immutable.Set<T> keySet()
      Return the set of keys which are mapped to non-empty value sets.
      TypedMultiMap<T,​K> removed​(T key, K value)
      Return a map that has the given mapping from the given key removed.
      TypedMultiMap<T,​K> setAll​(T key, scala.collection.immutable.Set<K> values)  
      java.lang.String toString()  
      TypedMultiMap<T,​K> valueRemoved​(java.lang.Object value)
      Return a map that has the given value removed from all keys.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • TypedMultiMap

        public TypedMultiMap()
    • Method Detail

      • empty

        public static <T,​K> TypedMultiMap<T,​K> empty()
        Obtain the empty map for the given key type and key–value type function.
      • keySet

        public scala.collection.immutable.Set<T> keySet()
        Return the set of keys which are mapped to non-empty value sets.
      • inserted

        public TypedMultiMap<T,​K> inserted​(T key,
                                                 K value)
        Return a map that has the given value added to the mappings for the given key.
      • get

        public scala.collection.immutable.Set<K> get​(T key)
        Obtain all mappings for the given key.
      • valueRemoved

        public TypedMultiMap<T,​K> valueRemoved​(java.lang.Object value)
        Return a map that has the given value removed from all keys.
      • keyRemoved

        public TypedMultiMap<T,​K> keyRemoved​(T key)
        Return a map that has all mappings for the given key removed.
      • removed

        public TypedMultiMap<T,​K> removed​(T key,
                                                K value)
        Return a map that has the given mapping from the given key removed.
      • setAll

        public TypedMultiMap<T,​K> setAll​(T key,
                                               scala.collection.immutable.Set<K> values)
      • $plus$plus

        public TypedMultiMap<T,​K> $plus$plus​(TypedMultiMap<T,​K> other)
        Add all entries from the other map, overwriting existing entries.

        FIXME: should it merge, instead?

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object