我有一个hashmultimap,这个数据结构的当前行为是每当我尝试插入一个已经存在的值时,它都不会插入,但是我想要一个不同的行为:如果我想插入的对象是值等于,我想更新这个值。
答案 0 :(得分:1)
此行为是HashMultimap
使用标准HashSet
进行值集合的结果。 Set#add
的合同是:
如果此组已经包含该元素,则该调用将保持设置不变
但是,multimap的合同不需要这个。如果您创建具有所需更新行为的Collection
实现,则可以使用Multimaps#newMultimap使用该支持集合类型创建多图。
我要提醒的是,这个要求似乎很可疑......在Set
中使用值对象时,您尝试更新值对象的事实有点臭。可能你真正想要的就像Map<CompositeKey<CurrentKey, CurrentValue>, State>
。然后,更新行为只会变为put
。