2010-01-22 14 views
9

Sto provando ad avere una Multimap (basata su hash) con un Multiset (basato su hash) di valori per ogni chiave. Vedere l'esempio:Multimap con HashMultiset per valori

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 poterlo restituire come Multiset (incluso in Multisets.unmodifiableMultiset()). Non voglio copiarlo ogni volta in un nuovo Multiset. Ho qualche altra opzione che tornare a Map<K, Multiset<V>> e aggiungere nel mio codice la complessità che Multimap intende eliminare?

risposta

6

Ho paura che questo non sembra possibile. Dovresti presentare una richiesta di funzionalità. Ho un vago sospetto che quelle persone astute di Google abbiano un bel tipo di Multimap che potrebbero potenzialmente rilasciare potenzialmente in grado di aiutarti.

+0

Oh beh, questo è quello che sospettavo, grazie comunque. Non sono esattamente sicuro di quale caratteristica chiedere (dal momento che c'è sempre il pericolo di ottenerla :)). PS: a volte sei così segreto! –

+2

Anche questo mi piacerebbe. Nessuna possibilità è successo negli ultimi ≳4 anni? –

+1

Ahimè, no, abbiamo perso la fiducia nella particolare soluzione che prima pensavamo di poter pubblicare. –

0

Il Multimap interface specifica solo che get(K) restituisce un Collection<V>. Penso che il design del codice dipenda in modo scadente dal presupposto che dipenda o presupponga qualcos'altro.

Puoi ampliare un po 'di più ciò che stai cercando di fare qui? Sembra che ci dovrebbe essere un modo più semplice per realizzarlo.

+4

La versione breve della domanda è: "Voglio solo una multimap dove posso vedere i valori attraverso l'API Multiset, non l'API Collection". –

Problemi correlati