【发布时间】:2014-08-28 10:51:12
【问题描述】:
这是一个与 [FindBugs warning: Inefficient use of keySet iterator instead of entrySet iterator
类似的问题但是,我正在尝试做一些不同的事情。我当前的代码在这里:
for (Double key2 : sortedPolygons.keySet()) {
if (sortedPolygons.get(key2).getExteriorRing().equals(hole)) {
sortedPolygons.remove(key2);
break;
}
}
执行链接中的解决方案之类的操作不起作用。这是所述解决方案的实现:
for(Map.Entry<Double, Polygon> entry : sortedPolygons.entrySet()) {
if (entry.getValue().getExteriorRing().equals(hole)) {
.....
这里的问题是我正在尝试删除该条目。没有entry.remove()。如何在没有 FindBugs 错误的情况下替换我的第一个代码块:
低效使用keySet迭代器代替entrySet迭代器 ->
此方法使用一个键访问 Map 条目的值,该键是 从 keySet 迭代器中检索。使用一个更有效 映射 entrySet 上的迭代器,避免 Map.get(key) 查找。
需要注意的是,底层结构是TreeMap,不能更改。
【问题讨论】:
标签: java iterator sonarqube treemap findbugs