小编gre*_*ory的帖子

在Java中增加Map值的最有效方法

我希望这个问题对于这个论坛来说不算太基础,但我们会看到.我想知道如何重构一些代码以获得更好的性能,这些代码会运行很多次.

假设我正在使用Map(可能是HashMap)创建一个单词频率列表,其中每个键都是一个字符串,其中包含要计数的单词,而值是一个整数,每次找到该单词的标记时,该整数都会递增.

在Perl中,增加这样的值将非常简单:

$map{$word}++;
Run Code Online (Sandbox Code Playgroud)

但在Java中,它要复杂得多.这是我目前正在做的方式:

int count = map.containsKey(word) ? map.get(word) : 0;
map.put(word, count + 1);
Run Code Online (Sandbox Code Playgroud)

这当然依赖于较新Java版本中的自动装箱功能.我想知道你是否可以提出一种更有效的方法来增加这样的价值.是否有良好的性能原因可以避开Collections框架并使用其他东西?

更新:我已经对几个答案进行了测试.见下文.

java collections optimization

349
推荐指数
14
解决办法
21万
查看次数

标签 统计

collections ×1

java ×1

optimization ×1