Гуава MultiMap
имеет реализации ImmutableListMultimap
и ImmutableSetMultimap
. Учитывая, что я создал экземпляр ImmutableListMultimap<String, Anything>
, как я могу преобразовать его в java.util.Map<String, List<Anything>>
?
Метод asMap()
возвращает java.util.Map<String, Collection<Anything>>
, но его нельзя привести к java.util.Map<String, List<Anything>>
.
Лучшее, что у меня сейчас есть, это
final Map<String, Collection<Anything>> listMultimap = multimap.asMap();
// convert to Map<String, List<>>
final Map<String, List<Anything>> listMap = listMultimap.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
e -> (List<Anything>) e.getValue()));
, но это не выглядит идеальным. Учитывая, что переменная экземпляра имеет тип ListMultimap, разве не должно быть удобного метода для ее представления в виде Map<..., List>
?
Apache commons-collection ArrayListValuedHashMap
, имеющего ту же проблему.