Мультикарта с HashMultiset для значений

Я пытаюсь иметь (основанную на хеше) Мультикарту с (основанным на хеше) Мультимножеством значений для каждого ключа. Посмотрите пример:

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 предназначенный для устранения?

9
задан Dimitris Andreou 22 January 2010 в 17:58
поделиться

2 ответа

Боюсь, что это не представляется возможным. Вы должны подать запрос на функцию. У меня есть подозрение, что у этих хитрых людей из Google есть отличная мультикарта, которую они могут выпустить и которая может вам помочь.

6
ответ дан 4 December 2019 в 23:39
поделиться

Интерфейс MultiMaP Указывает только, что Get (K) возвращает коллекцию . Я думаю, что это будет плохой дизайн для вашего кода, чтобы зависеть или принимать все остальное.

Можете ли вы увеличить немного больше на том, что вы пытаетесь здесь сделать? Похоже, что должен быть более простой способ достичь его.

0
ответ дан 4 December 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: