2012-03-24 2 views
2

В моем коде используется HashMultiMap. Моя структура HashMultiMap как,Java HashMultiMap Сохранение выпуска

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

Key2 -> Value21 -> Value22 ....

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

+1

Какой тип 'значений' в вашем коде? Вы правильно выполнили 'equals()'? –

ответ

6

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

MultiMap не хранит дубликаты пар ключ-значение. Добавление новой пары «ключ-значение», эквивалентной существующей паре «ключ-значение», не влияет.

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

2

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

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

+1

Почему он не использует MultiHashMap? Не гарантирует ли все значения для ключа уникальными? –

Смежные вопросы