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

今天在做一个数据处理的时候遇到一点问题,因为我需要对一个集合的数据分别截取六分之一然后赋值给六个我需要用到的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异常确实就这样解决了!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值