请参考以下方法:
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 迭代器检索到的键。 更有效的方法是在 map 的 entrySet 上使用迭代器,以避免 Map.get(key) 操作."
Map
是一个哈希表,它是否更高效仍有争议,因为查找是*O(1),否则必须是TreeMap
,其中查找是(O log N)*。这几乎不会产生太大差异。这里纯粹是吹毛求疵。 - user207421