java - Java 方法的编程性能

标签 java performance

两种做事方式,我很好奇哪种方式更快:

第一种方式:

if (!map.containsKey(key)) {
    map.put(key, new ArrayList<String>());
}
map.get(key).addAll(someList);

第二种方式:

List<String> existingList = map.get(key);
if (existingList == null){
    existingList = new ArrayList<String>();
}
existingList.addAll(someList);
map.put(key, existingList);

第一种方式似乎需要更频繁地散列 key ,但与第二种方式相比需要更少的对象创建。在我看来,第二种方式可能比第一种方式更快但更耗费资源。

想法?

最佳答案

您的第二种方式的修改版本将是最佳的:

List<String> existingList = map.get(key);
if (existingList == null){
   existingList = new ArrayList<String>();
   map.put(key, existingList);
}
existingList.addAll(someList);

这确保查找只进行一次,List 仅在必要时实例化并放入 Map

编辑:作为@Martijn Courteaux注意,当找不到 key 时,第二次查找由 put() 完成。

关于java - Java 方法的编程性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7560029/

相关文章:

python - 组合步骤

java - 在 Java 中转换对象

java - JUnit:允许预期和实际之间有 1 秒的差异

database - 水平缩放和垂直缩放是什么意思?

objective-c - 使用 localizedStandardCompare 对 NSURL 进行排序的性能

python - 在 numpy 中计算高于阈值的数组值的最快方法

java - io.rest-assured 和 jayway rest-assured 有什么区别?

java - 字符类减法

java - Android 应用内结算 - 签名 JSON 中的用户 ID

php - 这个 PHP 类是否针对 mysql 数据库访问进行了优化?