I really like the Multimap
class of the google guava library. It is a map type where you can add multiple values for a key, so it effectively maps from a key to a collection of some type. What I especially love is the Multimaps.index()
function which takes an Iterable
and a key function and returns a Multimap
which groups (or indexes or maps) the elements of the Iterable
by the value the function returns for each of those elements.
What I find a bit strange is that Multimap.values()
returns a flat collection instead of a collection of collections? So the grouping the index function gave me is lost once Ì retrieve the values. I can circumvent that problem by calling Multimap.asMap()
and then call values() on that.
Does anyone know why it may make sense that Multimap
behaves that way?