Pregunta

Estoy tratando de tener un (a base de hash) con un Multimapa (basado en hash) Multiset de valores para cada tecla. Vea el ejemplo:

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");

Pero entonces,

System.out.println(mmap.get("1") instanceof Multiset<?>); 
//false, the returned collection is not a HashMultiset,
//but a (private) WrappedCollection

Así que parece que no puedo acceder al conjunto múltiple creé? Yo quería ser capaz de volver que, como Multiset (envuelto en Multisets.unmodifiableMultiset ()). No quiero copiarlo en un nuevo Multiset cada vez tampoco. ¿Tengo alguna otra opción que cambiar de nuevo a Map<K, Multiset<V>> y añadiendo en mi código de la complejidad que Multimap destinado a eliminar?

¿Fue útil?

Solución

Me temo que esto no parece ser posible. Debe presentar una solicitud de función. Tengo la sospecha de esos astutos Google gente tiene una especie ingeniosa de un Multimapa que potencialmente podrían liberar que potencialmente podría ayudarle.

Otros consejos

El Multimap interfaz sólo se especifica que get(K) cambio un Collection<V>. Creo que sería un mal diseño de su código dependa o asumir cualquier otra cosa.

Se puede ampliar un poco más de lo que estamos tratando de hacer aquí? Parece que debe haber una manera más fácil de lograrlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top