ArrayList算是我用的比较多的数据结构之一。今天总结一下:
1.意义 和数组差不多,但是有个好处,能够动态地改变大小。
2.内部实现 ArrayList内部是用数组来实现的,首先ArrayList会初始化一定容量的数组,存放放在ArrayList中的对象的reference。当我们不断的add,内部数组会full,这个时候。ArrayList会自动创建一个更大的内部数组把那些references从较小的数组中拷贝过来同时把要add的那个对象也塞进去,当然这样会引起额外的开销。从这个原理来看,.在使用ArrayList的时候最好在构造它的时候指定比较合理的初始容量。
3.操作 1)add和addAll add:是把参数当作一个Object放进list addAll:把参数(Collection)中每个元素放进list 2)toArray()和toArray(Object[] a) toArray():返回的是一个Object[],其中的每个元素是一个Object,需要逐个类型转换
Person[] person = (Person[]) list.toArray();//这样是不对的,运行会抛出ClassCastException,需要逐个转
toArray(Object[] a):输出转型后的数组
Person[] person = (Person[]) list.toArray(new Person[list.size()]);