HashMap 中的keySet()和entrySet()方法的比较
在用Coverity(代码检视工具)进行代码检视时,凡是对于HashMap中使用keyset方法的地方全部报warning,说使用了低效的方法,然后建议使用entrySet替代,当时不太清楚entrySet的用法,也没管神马warning,结果发现它在每个这样使用的地方都报了warning,不得不重视了,然后就对这二者进行了一些学习,现将学习心得贴出来。。。
被警告的代码如下:
public static void setValues2SessionMap(ControllerData cd,Map<String,Object> valueMap){Map<String,Object> sessionMap = DSViewHelper.getInstance().getSessionMap();for(String valName :valueMap.keySet()){String key = cd.getDeckId()+"."+valName;Object value = valueMap.get(valName);//other code here...}}
public static void setValues2SessionMap(ControllerData cd,Map<String,Object> valueMap){Map<String,Object> sessionMap = DSViewHelper.getInstance().getSessionMap();Set<Map.Entry<String, Object>> keyEntrySet = valueMap.entrySet();for(Map.Entry<String, Object> entry:keyEntrySet){String key = cd.getDeckId()+"."+entry.getKey();Object value = entry.getValue();//other code here...}}