elementData是一个缓存数组,它通常会预留一些容量,等容量不足时再扩充容量,这个楼主一定是明白的,不用多解释。
假如现在实际有了5个元素,而elementData的大小可能是10,那么在序列化时只需要储存5个元素,数组中的最后五个元素是没有实际意义的,不需要储存。
所以ArrayList的设计者将elementData设计为transient,然后在writeObject方法中手动将其序列化,并且只序列化了实际存储的那些元素,而不是整个数组
ArrayList在迭代的时候是不能修改的
ArrayList内部内中的迭代器Itr在调用next()方法时,会判断集合是否被修改(add,remove),若被修改则抛异常。
http://blog.csdn.net/chenssy/article/details/37521461