Мне очень нравится Multimap класс библиотеки goava goava. Это тип карты, где вы можете добавить несколько значений для ключа, поэтому он эффективно отображает из ключа в коллекцию некоторого типа. Особенно мне нравится функция Multimaps.index(), которая принимает Iterable и ключевую функцию и возвращает Multimap, какие группы (или индексы или карты) элементы Iterable по значению, возвращаемому функцией для каждого из этих элементов.
Я немного странно понимаю, что Multimap.values() возвращает плоскую коллекцию, а не коллекцию коллекций? Таким образом, группировка функции индекса дала мне потеряться, как только Ì получить значения. Я могу обойти эту проблему, вызвав Multimap.asMap(), а затем вызовет на ней значения().
Кто-нибудь знает, почему может иметь смысл, что Multimap ведет себя таким образом?
