Java - Exception in thread quot;mainquot; java.util.ConcurrentModificationException(Java - 线程“main中的异常java.util.ConcurrentModificationException)
问题描述
有什么方法可以在迭代时修改特定键的 HashMap
值?
下面给出一个示例程序:
public static void main(String[] args) {哈希映射<整数,数组列表<字符串>>hm = new HashMap<Integer, ArrayList<String>>();ArrayListar = new ArrayList<String>();for(int i=0;i<50;i++){ar.add(Integer.toString(i));}hm.put(1, ar);for(字符串 s:hm.get(1)){hm.get(1).add("你好");}}
抛出错误:
线程main"中的异常 java.util.ConcurrentModificationException在 java.util.ArrayList$Itr.checkForComodification(未知来源)在 java.util.ArrayList$Itr.next(未知来源)在 Excp.main(Excp.java:17)
检测到对象的并发修改但不允许修改的方法可能会抛出此异常.
以下代码导致问题.
for(String s:hm.get(1)){hm.get(1).add("你好");}
您正在迭代和修改相同的内容.通过创建 new ArrayList
ArrayListar1 = new ArrayList();对于(字符串 s:hm.get(1)){ar1.add("你好");}
阅读这里p>
Is there any way I can modify the HashMap
values of a particular key while iterating over it?
A sample program is given below:
public static void main(String[] args) {
HashMap<Integer,ArrayList<String>> hm = new HashMap<Integer, ArrayList<String>>();
ArrayList<String> ar = new ArrayList<String>();
for(int i=0;i<50;i++){
ar.add(Integer.toString(i));
}
hm.put(1, ar);
for(String s:hm.get(1)){
hm.get(1).add("hello");
}
}
Error Thrown:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at Excp.main(Excp.java:17)
This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible.
Below peice of code is causing the problem.
for(String s:hm.get(1)){
hm.get(1).add("hello");
}
You are iterating and modifying the same. Avoid this by creating new ArrayList
ArrayList<String> ar1 = new ArrayList<String>();
for (String s : hm.get(1)) {
ar1.add("hello");
}
have a read here
这篇关于Java - 线程“main"中的异常java.util.ConcurrentModificationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java - 线程“main"中的异常java.util.ConcurrentMod


基础教程推荐
- 如何对 Java Hashmap 中的值求和 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01