Почему guava Multimap.values() возвращает плоское значение коллекция вместо коллекции коллекций?

Мне очень нравится классMultimapбиблиотеки Google guava. Это тип сопоставления, в котором вы можете добавить несколько значений для ключа, поэтому он эффективно сопоставляет ключ с коллекцией определенного типа. Что мне особенно нравится, так это функцияMultimaps.index() , которая принимает Iterableи ключевую функцию и возвращает Multimap, которая группирует (или индексирует, или отображает) элементы Iterableпо значению, которое функция возвращает для каждого из этих элементов.

Что мне кажется немного странным, так это то, чтоMultimap.values()возвращает плоскую коллекцию вместо коллекции коллекций? Таким образом, группировка, которую дала мне индексная функция, теряется, как только я извлекаю значения. Я могу обойти эту проблему, вызвавMultimap.asMap() , а затем вызвав для этого values().

Кто-нибудь знает, почему может иметь смысл, что Multimapведет себя таким образом?

11
задан CubeJockey 23 May 2016 в 18:39
поделиться