Я пытаюсь иметь (основанную на хеше) Мультикарту с (основанным на хеше) Мультимножеством значений для каждого ключа. Посмотрите пример:
Multimap<Object, Object> mmap = Multimaps.newMultimap(
Maps.<Object, Collection<Object>>newHashMap(),
new Supplier<Collection<Object>>() {
public Collection<Object> get() {
return HashMultiset.create();
}
});
mmap.put("1", "2");
Но тогда,
System.out.println(mmap.get("1") instanceof Multiset<?>);
//false, the returned collection is not a HashMultiset,
//but a (private) WrappedCollection
Таким образом, кажется, что я не могу получить доступ к мультимножеству, которое я создал? Я хотел быть в состоянии возвратить это как Мультимножество (обернутый в Multisets.unmodifiableMultiset ()). Я не хочу копировать его в новое Мультимножество каждый раз также. Сделайте у меня есть любая другая опция, чем переключение назад на Map<K, Multiset<V>>
и добавление в моем коде сложность это Multimap
предназначенный для устранения?
Боюсь, что это не представляется возможным. Вы должны подать запрос на функцию. У меня есть подозрение, что у этих хитрых людей из Google есть отличная мультикарта, которую они могут выпустить и которая может вам помочь.
Интерфейс MultiMaP Указывает только, что Get (K)
возвращает коллекцию
. Я думаю, что это будет плохой дизайн для вашего кода, чтобы зависеть или принимать все остальное.
Можете ли вы увеличить немного больше на том, что вы пытаетесь здесь сделать? Похоже, что должен быть более простой способ достичь его.