La forma más limpia de indexar una Colección por una propiedad del elemento que en sí es una colección

tengo unList<Foo> y quiero una guayabaMultimap<String, Foo> donde hemos agrupado elFoo's por cada etiqueta de suCollection<String> getTags() función.

Estoy usando Java 8, por lo que lambdas y referencias de métodos están bien / alentadas.

Por ejemplo si tengo:

foo1, tags=a,b,c
foo2, tags=c,d
foo3, tags=a,c,e

Obtendría unMultimap<String, Foo> con:

a -> foo1, foo3
b -> foo1
c -> foo1, foo2, foo3
d -> foo2
e -> foo3

Respuestas a la pregunta(2)

Su respuesta a la pregunta