关于list的 java.util.ConcurrentModificationException异常处理

原创 2016年06月20日 22:53:30

今天在做一个数据处理的时候遇到一点问题,因为我需要对一个集合的数据分别截取六分之一然后赋值给六个我需要用到的List集合,然后我对每一个拿到的数据各自在增加一个数据。代码如下:

List<Bitmap> emojidata = Utils.scanSpecifyFile(getActivity(), Const.ASSETS_TYPE_EMOJI);
        List<Bitmap> emojiDataA= emojidata.subList(0, 27);      emojiDataA.add(BitmapFactory.decodeResource(this.context.getResources(), R.drawable.nim_emoji_del));
        List<Bitmap> emojiDataB = emojidata.subList(27, 54);        emojiDataB.add(BitmapFactory.decodeResource(this.context.getResources(), R.drawable.nim_emoji_del));
        List<Bitmap> emojiDataC = emojidata.subList(54,81);     emojiDataC.add(BitmapFactory.decodeResource(this.context.getResources(), R.drawable.nim_emoji_del));
        List<Bitmap> emojiDataD = emojidata.subList(81,108);        emojiDataD.add(BitmapFactory.decodeResource(this.context.getResources(), R.drawable.nim_emoji_del));

然后就意外的得到了java.util.ConcurrentModificationException这个“大奖”。由于我是第一次遇到这种问题,上网查询之后了解到这个异常一般是由于对list数据进行迭代的过程中对数据进行了增减的操作,导致了这个异常。但是我一直没有做迭代的操作,所以一直没有找到合适的解决方法。
后来得到高人指点,将数据截取该为复制:

emojiDataA= new ArrayList<Bitmap>(emojidata.subList(0, 27));
        emojiDataB = new ArrayList<Bitmap>(emojidata.subList(27, 54));
        emojiDataC = new ArrayList<Bitmap>(emojidata.subList(54,81));
        emojiDataD = new ArrayList<Bitmap>(emojidata.subList(81,108));

上面的问题就解决了。但是为什么这样就解决了问题呢?高人不肯定的讲:因为对母数据集合截取到的子list进行了增加数据,导致母集合的数据增加,所以就造成了迭代异常java.util.ConcurrentModificationException。
最后我也不确定是不是这么一回事,但是list集合的java.util.ConcurrentModificationException异常确实就这样解决了!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java.util包,Java的异常处理

Date 类  Date 类表示日期和时间 提供操纵日期和时间各组成部分的方法 Date 类的最佳应用之一是获取系统当前时间  Date 类构造方法 void dis...

DWR中的异常处理以及util.js的初步用例

完整版见https://jadyer.github.io/
  • jadyer
  • jadyer
  • 2012-06-11 10:34
  • 1333

java基础关于异常处理方式

  • 2016-08-20 09:42
  • 13.49MB
  • 下载

java异常处理

  • 2014-12-13 20:18
  • 124KB
  • 下载

java.util.ConcurrentModificationException异常的处理

java.util.ConcurrentModificationException异常 1、 今天在写一个带缓存功能的访问代理程序时出现了java.util.ConcurrentModificat...

java,访问异常处理方法

  • 2014-12-16 16:43
  • 963B
  • 下载

java异常处理

Java基本概念-异常处理

一 异常处理 1 异常:程序在设计时或运行时产生的错误 2 异常处理:处理异常的过程,异常被处理后,异常就不存在了,程序就可以继续运行了。如果异常不被处理,程序就会被强行终止 3 异常的体...

java异常处理

  • 2013-12-30 22:16
  • 78KB
  • 下载

C++ Java异常处理比较

  • 2014-06-21 21:12
  • 21KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)