Проблема хранения Java HashMultiMap - PullRequest
2 голосов
/ 24 марта 2012

Я использую HashMultiMap в моем коде.Моя структура HashMultiMap выглядит так:

Key1 -> Value11 -> Value12 -> Value13 ....

Key2 -> Value21 -> Value22 ....

Теперь я хочу, чтобы key1 имел одинаковые значения (пример: значение11 = значение12), а затем сохранить (или не хранить) только одну копию значения (пример: сохранить только значение11 или не хранить значение12).Кто-нибудь может мне помочь, как добиться этого эффективным (более быстрым) способом.

Ответы [ 2 ]

6 голосов
/ 24 марта 2012

Согласно Javadoc HashMultiMap, для этой цели вы выбрали правильный MultiMap:

Мультикарта не хранит повторяющиеся пары ключ-значение.Добавление новой пары ключ-значение, равной существующей паре ключ-значение, не имеет никакого эффекта.

Теперь вам нужно только убедиться, что equals()hashCode()) правильно реализованы в ваших значениях.Я не думаю, что вам стоит беспокоиться о более быстром способе сделать это.HashMultiMap должен быть реализован довольно эффективно.

2 голосов
/ 24 марта 2012

Если вы хотите такое поведение, почему бы не использовать такую ​​структуру, как:

Map<Key,Set<Values>> myMap = new HashMap<Key,Set<Values>>();

EDIT:

Если вы хотите использовать HashMultiMap, я бы порекомендовал один ниже

Реализация интерфейса MultiMap, который использует HashMap для карта и HashSets для автоматически созданных наборов.

http://people.csail.mit.edu/milch/blog/apidocs/common/HashMultiMap.html

...