深入理解ArrayList(源码解析)

一,源码解析

1.ArrayList源码分析

在这里插入图片描述
在这里插入图片描述
注:“懒加载”,顾名思义就是用到的时候才会创建,使用add()方法的时候才会创建容器
在这里插入图片描述
在这里插入图片描述
注:这儿的异常是非法容量的意思;
当new ArrayList时,传入的size参数大小<0时非法;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接上面
在这里插入图片描述
ArrayList的failfast机制(后面会提到什么是failfast机制)
在这里插入图片描述
接上
在这里插入图片描述
在这里插入图片描述
总结:
1.ArrayList底层是Object数组实现的动态数组;
2.ArrayList的默认容量为0;
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数组的操作,获取数组某个索引的元素,修改数组某个索引的元素,删除数组的某个元素等等.都差不多是一个套路~

发布了53 篇原创文章 · 获赞 42 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_42815122/article/details/86101900