2016-03-12 3 views
-1

У меня hashmultimap, текущее поведение этой структуры данных - это когда я пытаюсь вставить значение, которое уже существует, оно не вставляется, однако мне бы хотелось по-другому: если объект, который я хочу для вставки, поскольку значение равно, я хочу обновить это значение.Guava HashMultimap обновление равное значение

+0

Почему вы не можете использовать 'java.util.HashMap' тогда? –

+0

Можете ли вы подробно рассказать о том, что вы пытаетесь сделать? например почему объекты ценности считаются равными, даже если они разные? –

ответ

1

Этот результат является результатом HashMultimap с использованием стандарта HashSet для его сбора значений. Договор Set#add является:

Если этот набор уже содержит элемент, вызов оставляет набор без изменений

Однако договор Multimap не требует этого. Если вы создаете реализацию Collection, которая имеет желаемое поведение обновления, вы можете использовать Multimaps#newMultimap для создания мультимапа с использованием этого типа коллекции.

Я бы предупредил, что это требование кажется подозрительным ... факт, что вы пытаетесь обновить объекты значения, пока они используются в Set, несколько вонючий. Может быть, вы действительно хотите что-то вроде Map<CompositeKey<CurrentKey, CurrentValue>, State>. Тогда поведение обновления просто становится put.

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