Java并发修改异常
发布时间:2020-12-15 04:56:10 所属栏目:Java 来源:网络整理
导读:我编写了以下代码,导致并发修改异常.我该怎样预防呢?我们的想法是逃避Map的所有值,并使用新的param map重新构建对象(dO). try { MapString,String[] paramMap = dO.getParameterMap(); SetMap.EntryString,String[] entries = paramMap.entrySet(); Iterato
我编写了以下代码,导致并发修改异常.我该怎样预防呢?我们的想法是逃避Map的所有值,并使用新的param 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()])); } } } 解决方法
抛出异常是因为您在迭代时添加/删除地图中的内容:
dO.removeParameter(entry.getKey()); dO.addParameter(entry.getKey(),valList.toArray(new String[valList.size()] 你应该使用iterator.remove()代替. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |