android详细信息java.util.ConcurrentModificationException变态
在今天做android当项目,我遇到了这个异常,好吧。其实最不寻常遇到异常IllegalstateException。它们与我们的硬件连接SDK抛出,我想折磨学生阿玉啊。扯远了。
今天,我想回到这个异常。java.util.ConcurrentModificationException异常,一開始我愣了一下。貌似从来没遇到过这个,然后果断百度大神。这才发现:
原因是你遍历该集合时。对该集合进行了删除元素的操作导致的。假设你有删除元素的必要,建议赋值到还有一个集合,然后对他进行删除操作.
偶出现错误的地方:
if (serverCards != null) {
for (PaymentCard serverCard : serverCards) {
MstCard matchingMstCard = findMatchingMstCard(serverCard,
mstCards);
ChargecaseCard matchingChargecaseCard = findMatchingChargecaseCard(
serverCard, chargecaseCards);
if (matchingMstCard != null && matchingChargecaseCard != null) {
matchingMstCard.setDominantColor(serverCard
.getDominantColor());
matchingChargecaseCard.setDominantColor(serverCard
.getDominantColor());
unifiedCards.add(new UnifiedCard(matchingMstCard,
serverCard, matchingChargecaseCard));
mstOnlyCards.remove(matchingMstCard);
chargecaseOnlyCards.remove(matchingChargecaseCard);
} else if (matchingMstCard != null
&& matchingChargecaseCard == null) {
matchingMstCard.setDominantColor(serverCard
.getDominantColor());
unifiedCards.add(new UnifiedCard(matchingMstCard,
serverCard));
mstOnlyCards.remove(matchingMstCard);
} else if (matchingMstCard == null
&& matchingChargecaseCard != null) {
matchingChargecaseCard.setDominantColor(serverCard
.getDominantColor());
unifiedCards.add(new UnifiedCard(serverCard,
matchingChargecaseCard));
chargecaseOnlyCards.remove(matchingChargecaseCard);
} else {
serverOnlyCards.add(serverCard);
}
}
}
for (MstCard card : mstOnlyCards) {
ChargecaseCard matchingChargecaseCard = findMatchingChargecaseCard(
card, chargecaseCards);
if (matchingChargecaseCard != null) {
matchingChargecaseCard
.setDominantColor(card.getDominantColor());
unifiedCards.add(new UnifiedCard(card, null,
matchingChargecaseCard));
chargecaseOnlyCards.remove(matchingChargecaseCard);
} else {
unifiedCards.add(new UnifiedCard(card));
}
}
for (ChargecaseCard card : chargecaseOnlyCards) {
unifiedCards.add(new UnifiedCard(card));
}
for (PaymentCard card : serverOnlyCards) {
unifiedCards.add(new UnifiedCard(card));
}
return unifiedCards;
在一个for循环中mstOnlyCards调用了,mstOnlyCards.remove()方法。
特记录之,引以为戒。
版权声明:本文博主原创文章。博客,未经同意不得转载。
android详细信息java.util.ConcurrentModificationException变态的更多相关文章
- 浅谈java.util.ConcurrentModificationException(并发修改异常)
java中的list集合是我们经常使用的集合,而对集合进行增加和删除元素是我们最常用的操作.那么在什么时候对list集合什么样的操作,就会发生java.util.ConcurrentModificat ...
- CAS (15) — CAS 线上环境 Ehcache Replication 的非稳定重现错误 java.util.ConcurrentModificationException
CAS (15) - CAS 线上环境 Ehcache Replication 的非稳定重现错误 摘要 线上环境在 EhCache Replication 过程中出现 java.util.Concur ...
- java.util.ConcurrentModificationException解决详解
异常产生 当我们迭代一个ArrayList或者HashMap时,如果尝试对集合做一些修改操作(例如删除元素),可能会抛出java.util.ConcurrentModificationExceptio ...
- java.util.ConcurrentModificationException 多线程访问ArrayList引起
http://blog.csdn.net/androiddevelop/article/details/21509345 Java ConcurrentModificationException ...
- java.util.ConcurrentModificationException 解决办法(转载)
今天在项目的中有一个需求,需要在一个Set类型的集合中删除满足条件的对象,这时想当然地想到直接调用Set的remove(Object o)方法将指定的对象删除即可,测试代码: public cla ...
- java.util.ConcurrentModificationException --map
key:3-key key:/v1.02-key Exception in thread "main" java.util.ConcurrentModificationExcept ...
- 偶遇到 java.util.ConcurrentModificationException 的异常
今天在调试程序 遇到了如此问题 贴上代码来看看稍后分析 List<String> list = null;boolean isUpdate = false;try { list = JSO ...
- 对ArrayList操作时报错java.util.ConcurrentModificationException null
用iterator遍历集合时要注意的地方:不可以对iterator相关的地方做添加或删除操作.否则会报java.util.ConcurrentModificationException 例如如下代码: ...
- LinkedList - java.util.ConcurrentModificationException
package com.test.io; import java.io.BufferedReader; import java.io.FileNotFoundException; import jav ...
随机推荐
- dom4j解析xml中指定元素下内容
需求:XML为例如以下样式,如今我仅仅想取得timer以下的5000和60000. 解决的方法例如以下: <?xml version="1.0" encoding=" ...
- 顺序表----java实现
最简单的数据结构--顺序表,此处以数组为例. 顺序表的优点:支持随机读取,内存空间利用率高. 顺序表的缺点:1.需要预先给出最大数据元素个数,这往往很难实现. 2.插入和删除时需要移动大量数据. Se ...
- HDU ACM 1267 下沙的沙子有几粒?->DP
题意:m个H和n个D,从左開始数H的累积个数总不比D的累计数少的排列有多少种.比如,3个H和1个D共同拥有3种符合要求的排列H D H H,H H D H,H H H D. 分析:状态方程为,DP[ ...
- Python 统计Facebook用户爱好的个数
CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-12 @author: guaguastd @name: f ...
- iOS6之后 NSAttributedString 福利
@于iOS6之前,需要使用NSMutableAttributedString当你需要导入:CoreText.framework框架的.但在iOS6 之后就不在须要了. - (void)testOfNS ...
- 照片教你eclipse通过使用gradle 打包Android
gradle其他优点不说,在android当应用程序公布.假设你要算一些渠道,gradle 在节目包装散装优势:下面给大家介绍的图形 按eclipse当出口 选择Android:例如下面的附图 一步一 ...
- JDBC在getConnection之前为什么要调用Class.forName(转)
获取一个数据库连接的通用模板如下: String driver = "oracle.jdbc.OracleDriver"; String url = "jdbc:orac ...
- 如何获得SQL Server索引使用情况
原文:如何获得SQL Server索引使用情况 原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-info ...
- 如何识别SQL Server中的CPU瓶颈
原文:如何识别SQL Server中的CPU瓶颈 原文出自: http://www.mssqltips.com/sqlservertip/2316/how-to-identify-sql-server ...
- Cordova WP8 插件开发
原文:Cordova WP8 插件开发 前面博客中介绍了Cordova WP8平台上的安装部署,Cordova扩展可以利用WP8本地代码扩展WebApp的功能,调用本地能力需要开发相应的插件,下面以闪 ...