有两种处理方式,我很好奇,这是更快的方法:

第一种方式:

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);


第一种方法似乎涉及必须更频繁地散列密钥,但是与第二种方法相比,它需要较少的对象创建。在我看来,第二种方法可能比第一种方法更快,但需要更多的资源。

有什么想法吗?

最佳答案

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

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


这样可以确保查找仅完成一次,并且仅实例化List并在必要时将其放入Map中。

编辑:如@Martijn Courteaux所述,当找不到密钥时,第二次查找由put()完成。

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

10-10 22:36