一,源码解析
1.ArrayList源码分析
注:“懒加载”,顾名思义就是用到的时候才会创建,使用add()方法的时候才会创建容器
注:这儿的异常是非法容量的意思;
当new ArrayList时,传入的size参数大小<0时非法;
接上面
ArrayList的failfast机制(后面会提到什么是failfast机制)
接上
总结:
1.ArrayList底层是Object数组实现的动态数组;
2.ArrayList的默认容量为10;
3.ArrayList的最大容量为Integer.MAX_VALUE;
4.调用ArrayList无参构造器的时候并不是立刻就创建容器,而是在真正调用add的时候才会创建容器;
5.ArrayList有failFast机制
补充:
1.failFast机制
ArrayList只能在单线程环境下使用,如果在多线程环境下就会出现并发的安全问题,如果多个线程同时修改了这个ArrayList,就会抛出"ConcurrentModificationException"异常;
这被称为 “failFast机制”
在很多非线程安全的类中都有failFast机制,比如LinkedList,HashMap等等都有,这个机制主要用在迭代器,加强for循环等功能;
2.其他说明
ArrayList的其他方法,比如get,set,remove等等,都是对Object数组的操作,获取数组某个索引的元素,修改数组某个索引的元素,删除数组的某个元素等等.都差不多是一个套路~