【发布时间】:2011-11-11 06:25:16
【问题描述】:
我编写了以下导致并发修改异常的代码。我该如何预防?这个想法是转义 Map 的所有值并使用新的参数映射重建对象 (dO)。
try {
Map<String,String[]> paramMap = dO.getParameterMap();
Set<Map.Entry<String, String[]>> entries = paramMap.entrySet();
Iterator<Map.Entry<String, String[]>> it = entries.iterator();
while (it.hasNext()) {
Map.Entry<String, String[]> entry = it.next();
String[] values = entry.getValue();
List<String> valList = new ArrayList<String>();
if (values != null) {
for (String value : values) {
valList.add(escapeHTML(value));
}
dO.removeParameter(entry.getKey());
//请注意Parameter是hashMap所以,插入之前是否需要先删除该条目,否则它将替换与key关联的新值。它在 Java 中是如何工作的?
dO.addParameter(entry.getKey(),valList.toArray(new String[valList.size()]));
}
}
}
【问题讨论】: