Guava HashMultimap更新等值

时间:2016-03-12 14:05:06

标签: guava

我有一个hashmultimap,这个数据结构的当前行为是每当我尝试插入一个已经存在的值时,它都不会插入,但是我想要一个不同的行为:如果我想插入的对象是值等于,我想更新这个值。

1 个答案:

答案 0 :(得分:1)

此行为是HashMultimap使用标准HashSet进行值集合的结果。 Set#add的合同是:

  

如果此组已经包含该元素,则该调用将保持设置不变

但是,multimap的合同不需要这个。如果您创建具有所需更新行为的Collection实现,则可以使用Multimaps#newMultimap使用该支持集合类型创建多图。

我要提醒的是,这个要求似乎很可疑......在Set中使用值对象时,您尝试更新值对象的事实有点臭。可能你真正想要的就像Map<CompositeKey<CurrentKey, CurrentValue>, State>。然后,更新行为只会变为put