前言
从上篇文章《从源码看ArrayList与Vector》我们看到有关容器类的各种增删操作,都会用到modCount++来做记录,那么到底这个变量有什么用呢,我们来看一下有关的源码。
引出
在编码过程中,我们常常遇到这样的需求,从一个容器中筛选出不符合类型的数据,然后剔除。一些初学者可能就容易写出这样的代码:
原因
原因就跟modCount这个变量有关,我们都知道java的foreach其实是语法糖,在底层编译的时候实际是采用的迭代器
add:
remove:
解决方案
既然上面使用迭代器会出问题,那我们不用迭代器不就行了吗,所以就有这样简单的做法
但其实迭代器中就已经有了这样的方法
所以使用迭代器的话可以这样,不用foreach语法
结语
然而我看生产环境很多都是foreach,然后另外new一个数组,然后把符合的装进另外的数组中。。。不管怎样都是可行的方案吧,看具体情景具体分析,记录下来主要是看看源码学习学习[呲牙]。