为了账号安全,请及时绑定邮箱和手机立即绑定

用Java增加Map值的最有效方法

用Java增加Map值的最有效方法

回首忆惘然 2019-11-04 15:08:50
我希望这个问题对于本论坛来说不是太基本了,但是我们会看到的。我想知道如何重构一些代码以获得更好的性能,而这些性能已经运行了很多次。假设我正在使用地图(可能是HashMap)创建一个单词频率列表,其中每个键是一个带有要计算单词的String,并且值是一个Integer,每次找到该单词的标记时都会增加。在Perl中,增加这样的值非常容易:$map{$word}++;但是在Java中,它要复杂得多。这是我目前的操作方式:int count = map.containsKey(word) ? map.get(word) : 0;map.put(word, count + 1);当然,哪个依赖于较新的Java版本中的自动装箱功能。我想知道您是否可以建议一种更有效的递增此值的方法。避开Collections框架并改用其他东西,甚至有良好的性能原因吗?更新:我已经测试了几个答案。见下文。
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

好的,可能是个老问题了,但是Java 8有一个更短的方法:


Map.merge(key, 1, Integer::sum)

它的作用:如果key不存在,则将1作为值,否则将1加到与key链接的值上。更多信息在这里


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 456 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信