我希望这个问题对于本论坛来说不是太基本了,但是我们会看到的。我想知道如何重构一些代码以获得更好的性能,而这些性能已经运行了很多次。假设我正在使用地图(可能是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链接的值上。更多信息在这里
添加回答
举报
0/150
提交
取消