繁体   English   中英

HashMap密钥更新与重复输入

[英]HashMap key update vs double entries

我正在使用哈希图来存储带有随时间变化的键的对象。

HashMap<String,Stuff> hm = new HashMap<String,Stuff>()
Stuff stuff = new Stuff();
hm.put( "OrignalKey", stuff);

我发现没有什么比删除“ OrignalKey”和put()具有相同对象的新条目更好的了。

hm.remove("OriginalKey");
hm.put("NewKey", stuff);

remove()似乎占用了大量CPU费用,因此我的问题是:

  1. 留下重复条目的实际内存成本是多少(不存在重叠风险)?
  2. 我只是缺少一些简洁的swapKey()方法吗?

留下重复条目的实际内存成本是多少(不存在重叠风险)?

好吧,您还有一个额外的条目,而且密钥本身无法进行垃圾回收。 如果密钥为“大”,则可能是一个问题。 这也意味着您永远无法获得准确的计数,您永远也无法明智地遍历所有值,等等。对我来说,这似乎是一个坏主意。

我只是缺少一些简洁的swapKey()方法吗?

没有这样的事情-对我来说,这是一个非常罕见的要求。 任何这样的方法几乎都必须做您正在做的事情-它必须找到旧密钥,将其从数据结构中删除,然后为新密钥插入一个条目。 我不能轻易想象一下一次知道两个操作就可能实现的优化。

密钥的交换不容易实现,因为密钥用于散列。 更改键意味着哈希值也很可能也不同。 在这种情况下,更改密钥即表示删除,然后重新插入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM