High-performance Concurrent MultiMap Java/Scala

Solution 1:

Why not wrap ConcurrentHashMap[T,ConcurrentLinkedQueue[U]] with some nice Scala-like methods (e.g. implicit conversion to Iterable or whatever it is that you need, and an update method)?

Solution 2:

Have you tried Google Collections? They have various Multimap implementations.

Solution 3:

There is one in akka although I haven't used it.

Solution 4:

I made a ConcurrentMultiMap mixin which extends the mutable.MultiMap mixin and has a concurrent.Map[A, Set[B]] self type. It locks per key, which has O(n) space complexity, but its time complexity is pretty good, if you aren't particularly write-heavy.