Java并发修改异常

Top*_*der 3 java exception

我编写了以下代码,导致并发修改异常.我该怎样预防呢?我们的想法是逃避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());
Run Code Online (Sandbox Code Playgroud)

//请注意,Parameter是一个hashMap所以,是否需要在插入之前先删除该条目,否则它将替换与key关联的新值.它在Java中如何工作?

                dO.addParameter(entry.getKey(),valList.toArray(new String[valList.size()]));
               }
            }
        }
Run Code Online (Sandbox Code Playgroud)

Jam*_*.Xu 12

抛出异常是因为您在迭代时添加/删除地图中的内容:

dO.removeParameter(entry.getKey());
dO.addParameter(entry.getKey(),valList.toArray(new String[valList.size()]
Run Code Online (Sandbox Code Playgroud)

你应该用iterator.remove().