【发布时间】:2012-09-20 07:03:49
【问题描述】:
请参考以下方法:
public Set<LIMSGridCell> getCellsInColumn(String columnIndex){
Map<String,LIMSGridCell> cellsMap = getCellsMap();
Set<LIMSGridCell> cells = new HashSet<LIMSGridCell>();
Set<String> keySet = cellsMap.keySet();
for(String key: keySet){
if(key.startsWith(columnIndex)){
cells.add(cellsMap.get(key));
}
}
return cells;
}
FindBugs 发出警告信息:
"低效使用keySet迭代器代替entrySet迭代器 这个方法使用一个键来访问一个 Map 条目的值,该键是 从 keySet 迭代器中检索。使用一个更有效 地图 entrySet 上的迭代器,避免 Map.get(key) 查找。”
【问题讨论】:
-
如果
Map是一个哈希映射,它是否更有效是有争议的,因为查找是O(1),,否则它必须是一个@ 987654323@ 查找是 (O log N)。 这几乎不会有太大的不同。纯属吹毛求疵。
标签: java performance findbugs