作者:燕歆波
导读:在更新list数据时候,出现了java.util.ConcurrentModificationException 异常;
Introduce
由于在实现抖音播放视频的效果,所以在滑到顶部时,需要加载上一页的数据,然后放在List的前面(0位置);可是一运行就爆出了异常!
郁闷了很久,查阅一些博客,人家虽没有明说,但是也算基本指出了问题在哪儿了; 但是当我解决问题的那一刻,感觉顿悟了;
在AbstractList源码中:
每当调用add等方法时,都会检查一个字段(modCount),查询modCount是在那些地方赋值,结果看到了在SubList中也赋了值,可是我在代码中使用了subList的方法截取数据源,这个方法其实是修改了modCount值的,
然后当我再一次增加数据时(此时的数据是subList得到的数据),发现此时modCount与subList的modCount值是不同的,此时便会报出异常!所以在获取子数据时,可以使用for循环,将所需数据过滤出来,避免使用subList!