两种做事方式,我很好奇哪种方式更快:
第一种方式:
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/