MultiMap con HashMultiset per i valori
-
22-09-2019 - |
Domanda
Sto cercando di avere un (hash-based) con un Multimap (hash-based) Multiset di valori per ogni chiave. Vedere l'esempio:
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");
Ma poi,
System.out.println(mmap.get("1") instanceof Multiset<?>);
//false, the returned collection is not a HashMultiset,
//but a (private) WrappedCollection
Così sembra non posso accedere al multiset ho creato? Volevo poter tornare che, come Multiset (avvolto in Multisets.unmodifiableMultiset ()). Non voglio copiarlo in un nuovo Multiset ogni volta neanche. Devo qualsiasi altra opzione rispetto al passaggio indietro per Map<K, Multiset<V>>
e aggiungendo nel mio codice della complessità che Multimap
scopo di eliminare?
Soluzione
Ho paura che questo non sembra essere possibile. Si dovrebbe presentare una richiesta di funzionalità. Ho un vago sospetto quegli astuti ragazzi di Google hanno un tipo abile di un Multimap che potrebbero potenzialmente rilasciare che potrebbero potenzialmente aiutare.
Altri suggerimenti
Il interfaccia Multimap specifica solo che get(K)
restituiscono un Collection<V>
. Penso che sarebbe cattiva progettazione per il codice a dipendere o assumere qualsiasi altra cosa.
Si può espandere un po 'di più su ciò che si sta cercando di fare qui? Sembra che ci dovrebbe essere un modo più semplice per realizzarlo.