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