android异常 ConcurrentModificationException();

在对map集合遍历key,并且判断key值是否存在,然后添加对应的value时,put了两次key之后,到第三次再判断时候抛出异常 throw new ConcurrentModificationException();,,

这是主要代码

private Map> modleLists() {
List lists = new ArrayList();
Map> maps = null;
for (int i = 0; i < carInfoLists.size(); i++) {
if (maps == null) {
maps = new HashMap>();
lists.add((carInfoLists.get(i)));
maps.put(carInfoLists.get(i).getModleName(), lists);
} else {
for (String key : maps.keySet()) {
if (key.contains(carInfoLists.get(i).getModleName())) {
CarModle carModle = carInfoLists.get(i);
maps.get(key).add(carModle);
break;
} else {
lists.clear();
lists.add(carInfoLists.get(i));
maps.put(carInfoLists.get(i).getModleName(), lists);
}
}

        }
    }

3个回答

谢谢各位,自己已解决,,,,,,,

在迭代maps时,不要对maps再进行操作

baidu_19694879
baidu_19694879 请问应该怎么解决呢
3 年多之前 回复

迭代到最后,需要removeall

baidu_19694879
baidu_19694879 我要进行的不是remove操作,而是遍历key,如果key存在,怎他的value增加,否则就添加一组新的键值对
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android异常 ConcurrentModificationException()
要进行的操作是,遍历map.判断key值是否存在。如果存在,,则this key对应的valuez增加一个list,否则的话,就重新再添加一组键值对,nnnprivate Map> modleLists() n List lists = new ArrayList();n Map> maps = null;n for (int i = 0; i < carInfoLists.size(); i++) n if (maps == null) n maps = new HashMap>();n lists.add((carInfoLists.get(i)));n maps.put(carInfoLists.get(i).getModleName(), lists);n else n Iterator>> it = maps.entrySet().iterator();n while (it.hasNext()) n Entry> next = it.next();n String key = next.getKey();n if (carInfoLists.get(i).getModleName().equals(key)) n CarModle carModle = carInfoLists.get(i);n maps.get(key).add(carModle);n else n lists.clear();n lists.add(carInfoLists.get(i));n maps.put(carInfoLists.get(i).getModleName(), lists);n nn
android异常 ConcurrentModificationException();
在对map集合遍历key,并且判断key值是否存在,然后添加对应的value时,put了两次key之后,到第三次再判断时候抛出异常 throw new ConcurrentModificationException();,,nn这是主要代码nnprivate Map> modleLists() n List lists = new ArrayList();n Map> maps = null;n for (int i = 0; i < carInfoLists.size(); i++) n if (maps == null) n maps = new HashMap>();n lists.add((carInfoLists.get(i)));n maps.put(carInfoLists.get(i).getModleName(), lists);n else n for (String key : maps.keySet()) n if (key.contains(carInfoLists.get(i).getModleName())) n CarModle carModle = carInfoLists.get(i);n maps.get(key).add(carModle);n break;n else n lists.clear();n lists.add(carInfoLists.get(i));n maps.put(carInfoLists.get(i).getModleName(), lists);n n nn n
关于ConcurrentModificationException异常原因及注意事项
嗨,大家好!最近在工作中遇到了一个棘手的问题(如题),特此在这里跟大家分享一下,第一次发博客,不足之处大家见谅! 异常出现原因:ConcurrentModificationException这个异常继承自RuntimeException,见名知意,这个异常一般是在Collection 上进行迭代,检测到对象的并发修改,但不允许这种修改时,抛出此异常,废话不多说,直接上干货,下面是几种出现这种异常的情
ConcurrentModificationException
[code=java]HashMap activeUsers = core.getUsers();rn Iterator> it = activeUsers.entrySet().iterator();rn while(it.hasNext())rn Map.Entry entry = (Map.Entry) it.next();rn log.info(entry.getKey()+" "+entry.getValue());[/code]rn这个在it.next的时候报rnjava.util.ConcurrentModificationExceptionrn at java.util.HashMap$HashIterator.nextEntry(Unknown Source)rn at java.util.HashMap$EntryIterator.next(Unknown Source)rn at java.util.HashMap$EntryIterator.next(Unknown Source)rn at com.dgF.sms.core.thread.DealSubmitSMSThread.run(DealSubmitSMSThread.java:38)
集合遍历时删除元素异常(ConcurrentModificationException)分析
传统方式下的Collection在迭代集合时,不允许对集合进行修改。根据AbstractList的checkForComodification方法的源码,分析产生ConcurrentModificationException异常的原因 传统方式下的Collection在迭代集合时,不允许对集合进行修改。 根据AbstractList的checkForComodificati
ConcurrentModificationException异常出现原因以及解决方法
今天在开发过程中遇到一个异常叫ConcurrentModificationException,这个异常用我的白话翻译是叫同时修改异常。 这个异常是怎么出现的呢,先看看已下的代码: @Override public void onGetModel(List modelList) { if (modelList != null) { this.i
解决数组迭代 ConcurrentModificationException异常的方法(复制)
// 先获取一级回复 List&lt;Reply&gt; replies = dao.getReply(targetId); // 解决数组迭代 ConcurrentModificationException异常的方法(复制) List&lt;Reply&gt; copyReplies = new ArrayList&lt;Reply&gt;();...
java集合(2)—— ConcurrentModificationException异常原因和解决方法
以下的内容摘抄自:http://www.cnblogs.com/dolphin0520/p/3933551.html ConcurrentModificationException异常出现的原因 使用集合的时候,通常希望遍历到需要修改的集合后,直接利用集合对象的remove方法直接删除或者修改对应的值。但是!这种方法是不可行的,调试过的小伙伴儿应该知道,这样做会抛出一个Concurrent...
多线程操作LinkedList导致ConcurrentModificationException异常
由于需要下载多张图片,程序中有一LinkedList listLoadingUrl记录正在联网下载的url链接。rnrn线程A下载完后,在线程结束之前要执行listLoadingUrl.remove(imgUrl);rn如果有新的图片请求,会执行listLoadingUrl.contains(imgUrl),如果存在该图片的链接,则表示已经在下载了。rn在执行contains(imgUrl)的时间段内,一旦线程A执行remove操作,则抛出了:ConcurrentModificationException异常。rnrn请问这种问题该如何解决呢?
我为什么会出这个异常啊concurrentmodificationexception
[img=https://img-bbs.csdn.net/upload/201512/22/1450757821_622752.png][/img][img=https://img-bbs.csdn.net/upload/201512/22/1450757828_134566.png][/img]rnrn我点击多次购物后就出现这个了,求大神帮帮我啊。这个异常是什么意思啊?
Java之旅--ConcurrentModificationException关于异常原因和解决方法
找到报错的源码    protected transient int modCount = 0; final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); } }看到上面的代码,估计大家都已经清
Java集合系列(二)—— 列表迭代器ConcurrentModificationException异常
前言:这个异常是大部分人新接触Iterator的时候都会看过,网上相应处理的资料也很多了。 原文出处: import java.util.*; class Demo { public static void main(String[] args) { //dieDai(); dieDai2(); } public static v
ConcurrentModificationException: 集合异常——产生原因和解决方法!
:注意事项:迭代器在使用的时候,有人为了方便,如下使用就会有问题 System.out.println(((Student)it.next()).getName()+”---”+((Student)it.next()).getAge()); 注意事项:迭代器在使用的时候,有人为了方便,如下使用就会有问题 System.out.println(((Student)it.next()).getN...
Java出现ConcurrentModificationException异常的详细分析与解决办法
在java开发中,大家应该会出现ConcurrentModificationException这个异常,对于新手可能会不在意,或者一脸懵逼。然而这个异常虽小,却很致命。在code review或测试时比较容易忽视,作为开发者,我们要尽量避免这种简单的异常。 例如我们有以下代码: package com.asd.collection; import java.u...
高并发读写导致ConcurrentModificationException异常的解决办法
1、使用java.util.concurrent包下面的并发容器      网上搜、查API文档。 2、读写分离,写操作加锁(以synchronized为例,其中synchronized锁住的是括号里的对象) Thread thread = new Thread(new Runnable() { public void run() { for (int i
遍历变量导致ConcurrentModificationException异常的问题
近期项目中遇到一个不是很常见的异常ConcurrentModificationException,排查问题后,发现是由于遍历某变量时,对变量进行修改导致的,在此记录一下。 先看测试代码 import java.util.ArrayList; public class OtherMethod { private static ArrayList myList = new ArrayList
ConcurrentModificationException 错误
我在网上搜索过了 遍历过程中增删list造成的 但是我试过了将变量保存起来,遍历完统一删除 还是会报错 逻辑没有问题 rnrnrnrn我的问题是这样的:rn我写了一个飞行射击游戏,有时候飞机会以一定的组合顺序出现,我把它叫做敌阵 ,我写了一个基于定时器的基类,敌阵类继承自这个类,在类中的 timertask中按一定顺序生成敌机加入链表中 , 然后在绘制每一帧的时候检测碰撞并且把碰撞的对象在链表中删掉,一般同时有好几个定时器存在,timertask中我也加入同步变量 rnrn=new TimerTask() rn public void run() rn if(getSynflag()==false) rn return;rn rnrn每次遍历的时候 用 setSynflag (false) 将 定时器锁住 使它不会增加list中的值 rn遍历中的值不会直接删掉 用一个list记录 遍历完毕统一删除rnrnrnrnrnrn但还是出现这个错误 list在遍历的时候明明已经不能变化了 rnrnrn使用了安全线程的CopyOnWriteArrayList也没有用 rnrn项目下载地址 rnhttp://pan.baidu.com/s/1pJBcpmzrnrn这是我自己兴起写的一个程序 希望能有人帮我看看调试一下 谢谢了 rnrnrnrnrnrn
ConcurrentModificationException的例子
[code=java]public class MapIterator rnrn public static void main(String[] args) rnrn Map map = new HashMap();rn map.put("a", "tangsc");rn map.put("b", "songyuanyuan");rnrn System.out.println("HashMap before iterator: " + map);rn Iterator it1 = map.keySet().iterator();rn while (it1.hasNext()) rn String key = it1.next();rn if (key.equals("a")) rn map.put("c", "name");rn rn rn System.out.println("HashMap after iterator: " + map);rnrnrn rnrnrn[/code]rnrn大家看看,为什么我这段代码不会引起ConcurrentModificationException,好奇怪
ArrayList的ConcurrentModificationException
package list;nnimport java.util.ArrayList;nimport java.util.Iterator;nimport java.util.List;nnpublic class ListDemo2 n public static void main(String[] args) n ArrayList list = new ArrayList();n list.add("hello");n list.add("world");n list.add("java");n list.add("world");n list.add("java");n list.add("world");n list.add("world");n list.add("world");n list.add("world");n list.add("java");n list.add("world");n Iterator it = list.iterator();n for (int i = 0; i < list.size() - 1; i++) n for (int j = i + 1; j < list.size(); j++) n if (list.get(i).equals(list.get(j))) n list.remove(j);n j--;n n n n while (it.hasNext()) n System.out.println((String)it.next());n n nn运行时报错:Exception in thread "main" java.util.ConcurrentModificationException,请问怎么解决/
ConcurrentModificationException问题?
[code]rnimport java.util.*;rnrnpublic class TryIteratorRemove rn public static void main(String [] args)rn Collection myCollection = new ArrayList(10);rn rn myCollection.add("123");rn myCollection.add("456");rn myCollection.add("789");rn rn int i=0;rn rn for(Iterator it = myCollection.iterator();it.hasNext();) rn String myObject = (String)it.next();rn System.out.println(myObject);rn rn i++;rnrn if(i==1)rn //myCollection.remove(myObject);rn it.remove();rn rn rnrn System.out.println("After remove,the size of myCollection is: " +rn myCollection.size()+" \n and its content is: ");rnrn for(String s : myCollection)rn System.out.println(s);rn rn rnrn[/code]rnrn 对于上面这段程序,为什么用'myCollection.remove(myObject);'时会报'ConcurrentModificationException'异常?而用'it.remove();'时没事呢?rnrn 我想从Java的源代码上找解释,可不知道从哪个类入手,把能想到的类都看了看,也没有解释通,请高手帮我看看。rn 谢谢!!rnrn后来从书上看到以下解释:rn "if one thread changes a collection while another rnthread is traversing it through with an iterator the iterator.hasNext() or iterator.next() call will throw rnConcurrentModificationException. Even the synchronized collection wrapper classes SynchronizedMap and rnSynchronizedList are only conditionally thread-safe, which means all individual operations are thread-safe but compound rnoperations where flow of control depends on the results of previous operations may be subject to threading issues."rn 不过我有以下疑问:rn 1,上面程序出错是由于线程问题吗?上面说到'当一个线程用iterator遍历collection时,另一个线程修改colleciton,iterator.hasNext()或iterator.next()就会抛出ConcurrentModificationException异常'。我想知道在上面我写的那段程序中是main线程修改这个collection吗?那对collection进行遍历的线程又是哪个呢?是Iterator自己又开了一个线程?rn 2,有没有例子演示下'all individual operations are thread-safe but compound rnoperations where flow of control depends on the results of previous operations may be subject to threading issues.'这段说的是什么?这个individual operations指的会是什么?
集合中并发异常ConcurrentModificationException的产生原因(fail-fast 事件)
并发异常ConcurrentModificationException 首先要了解什么是并发异常?(从源码的角度分析查看) 怎样才能产生并发异常? 找出解决办法 一、什么是并发异常? 从字面意思来看: 同时发生的修改异常 Concurrent——同时发生的,并存的 Modification——修正,改正,变更 Exception——异常 JDK源码解读: 上面一大串英文解释为:(来...
java语言基础(66)——集合框架(arrayList ConcurrentModificationException 并发修改异常的解决方案)
问题重现: package ArrayListDemo; import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemo { /** * @param args */ public static void main(String[] args) { ArrayList
循环List删除元素抛ConcurrentModificationException异常原因分析
使用for(Object obj:list)进行循环ArrayList时,如果循环删除list中的元素则会抛出 ConcurrentModificationException异常,如下图: 通过分析错误堆栈我们可以发现使用 for(Object obj:list) 进行循环时,实际上是调用List迭代器(iterator)的next方法进行循环(AbstractList类中的
如何解决ConcurrentModificationException问题
在当前的Java面试和后台开发中,多线程与线程池技术越来越重要。毫不夸张的说,如何你想进入任何一家好的网络公司并能够长足发展,多线程与线程池技术是必须要掌握的技能!
用java写坦克大战线程中一个关于ConcurrentModificationException异常
Iterator it = this.hero.shs.iterator();rn Shot st = null;rn EnemyTank et = null;rn Iterator itet = this.ets.iterator();rn while (it.hasNext()) rn st = (Shot) it.next();rn if(st.isLive)rn while (itet.hasNext()) rn et = (EnemyTank) itet.next();rn if(et.isLive)rn isStrike(et, st);rn rn rn rn rn这段代码是判断一个敌人是人坦克是否被我的子弹打中的可是每当我打第三个坦克时它就报这样一异常看截图
引子:传统同步类容器及典型ConcurrentModificationException异常
同步类容器(Vector、HashTable),同步类容器的同步功能都是由JDK的Collections.synchronized******等工厂方法去创建实现的,其底层的机制都是使用synchronized关键字对每个公有的方法进行同步,或者使用Object mutex对象锁机制使每次只能有一个线程访问容器。 同步类容器都是线程安全的,并非绝对,在某些复合操作场...
使用set时发生Java ConcurrentModificationException异常原因和解决方法
欢迎使用Markdown编辑器写博客import java.util.Set; import java.util.TreeSet;public class Practice { static final String RIGHT = "R"; static final String DOWN = "D"; private static String generateString(
关于java集合的遍历以及ConcurrentModificationException(并发操作异常)
遍历集合的常用方法以及并发操作异常
用jDOM解析时出现ConcurrentModificationException异常,请帮忙。
下述代码中有一个语句(带*号的)是要删除一个element,jdom API中有Element.removeElement(Element e),所以我就用Element的这个方法进行删除操作,结果出现异常。rn以下为counter.xmlrnrnrn 160rn rn rn 192.168.0.37rn 2004-01-05 09:59:01rn rn rn 127.0.0.1rn 2004-02-06 05:17:26rn rn rnrn我想用Record元素删除visitor元素:rnElement e_record=doc.getRootElement().getChild("Record");rnIterator it=doc.getRootElement().getChild("Record").getChildren().iterator(); rn while (it.hasNext())rn Element e_visitor;rn Element current = (e_visitor=(Element)it.next()).getChild("Time");rn String temp=current.getTextTrim().substring(0,10); rn if (temp.equals(getCurrentDate().trim())) totaltoday=String.valueOf(Integer.parseInt(totaltoday)+1); rn else rn * boolean b=e_record.removeContent(e_visitor);rn XMLOutputter outputter = new XMLOutputter(" ", true);rn outputter.output(doc, new FileOutputStream("C:\\JRun4servers\\soapserver\\default-ear\\default-war\\counter.xml"));rn rn rn rnrn谢谢!
Java中并发修改异常(ConcurrentModificationException)的产生原因及解决方法:)
一、并发修改异常的产生 举例如下: import java.util.ArrayList; import java.util.Iterator; public class WanYong { public static void main(String[] args) { ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;g...
并发修改异常ConcurrentModificationException产生的原因及解决方案
并发修改:遍历的同时在增减元素。 案例:有一个集合,判断里面有没有“baidu”这个元素,如果有,就添加一个“com”元素,请写代码实现 public static void main(String[] args) { //父类引用指向之类对象,以实现子类ArrayList为例,泛型以String为例 List&lt;String&gt; list = new ArrayLi...
java容器迭代或序列化时不允许修改操作之ConcurrentModificationException异常
java容器迭代或序列化时不允许修改操作 原因:迭代或序列化前后会查看modCount是否发生变化,如果发生变化,意味着容器结构发生变化,会抛出一个ConcurrentModificationException异常;容器在遍历时变化会发生一些不可控的问题。 具体化: LikedList和LinkedHashMap、LinkedHashSet在使用Lru顺序前提下,遍历和序列化时不允许put,r...
还是ConcurrentModificationException问题
想用Iterator遍历一个LinkedList,在使用完其中的一个元素后,就将它删除rnimport java.util.*;rnrnpublic class Controllerrn private List eventList = new LinkedList();rn public void addEvent(Event c)eventList.add(c);rn public void run()rn List subList = new LinkedList();rn Iterator it = eventList.iterator();rn while(it.hasNext())rn Event x =it.next();rn if(x.ready())rn System.out.println(x);rn x.action();rn subList.add(x);rn rn rn eventList.removeAll(subList);rn rnrn这里的subList和eventList指向的不是同一个引用啊,也没在遍历的时候删除元素,为什么还是抛出了ConcurrentModificationException???
购物车问题:ConcurrentModificationException
我在设计网上书店时,如果将购物车中的某本书删除,或者清空购物车时,因为改变了购物车集合中的内容,会产生ConcurrentModificationException,请问如何解决呢?谢谢各位!
集合的遍历(多线程)及ConcurrentModificationException
为了保证线程安全,在迭代器迭代的过程中,线程是不能对集合本身进行操作(修改,删除,增加)的,否则会抛ConcurrentModificationException的异常。 public class TestConcurrent { public static void main(String[] args) { Collection num = new ArrayList(); num
ConcurrentModificationException如何解决
public static void main(String[] args) rn List personDisList = new ArrayList();rn Person person1 = new Person();rn Person person2 = new Person();rn person1.setId("1");rn person2.setId("2");rn personDisList.add(person1);rn personDisList.add(person2);rn rn List personList = new ArrayList();rn for (int i=0; i
ThreadLocal 多线程下报 ConcurrentModificationException
代码在公司内网,没有办法发出来。rn我把程序流程的伪代码发出来,请大佬帮忙解决问题。谢谢。rn rn```rn//信号量控制并发rnprivate Semaphore semaphore=new Semaphore(4);rnrnpublic void run()rn for(int i=0;i<3600;i++)rn 获取一个信号量rn singleJob();rn rnrn rn@Asyncrnpublic void singleJob()rn tryrn User user=new User ();rn //将User设置入 ThreadLocalrn method1();rn method2();rn method3();rn //取出User存入数据库。rn cache(Exception e)rn finallyrn //释放信号量rn //清空ThreadLocal中设置的 Userrn rnrn```rn声明:@Async注解生效了 是多线程。rnrn我在singleJob里创建了一个User对象(举例而已),放进了ThreadLocal,在下面的三个方法中都从ThreadLocal中先取出user,然后设置user的一个属性再放入 ThreadLocal中。rn在finally块中从线程中移除。rnrn程序每次执行都至少会抛出1-2次ConcurrentModificationException。
Android异常
NULL 博文链接:https://technicalsearch.iteye.com/blog/2050662
android异常
public static List URLReadXmlByPull(String xmlUrlPath)rn throws Exception rn List listWorks = new ArrayList();rn Work works = null;rn URL url = new URL(xmlUrlPath);rn // 构建XmlPullParserFactoryrn XmlPullParserFactory pullParserFactory = XmlPullParserFactoryrn .newInstance();rn // 获取XmlPullParser的实例rn XmlPullParser xmlPullParser = pullParserFactory.newPullParser();rn // 设置输入流 xml文件装载器rn xmlPullParser.setInput(url.openConnection().getInputStream(), "UTF-8");rn他在最后一句就报异常了,求高手
集合操作的ConcurrentModificationException异常分析,为什么有时候循环remove不会异常?Iterator方式也会异常吗?
在我们代码中,禁止在foreach遍历list的时候直接使用list.remove()方法来删除元素的,会ConcurrentModificationException。不同的集合使用不同的方式,ArrayList,Vector,CopyOnWriteArrayList* **单线程情况:如果实际应用场景下有在遍历时删除元素的需求,如果容器为ArrayList或者Vector请使用Iterato
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池