ArrayList简单的源码分析
来源:互联网 发布:mac如何查看文件大小 编辑:程序博客网 时间:2024/05/16 06:56
ArrayList本质上是一个动态数组,该类实现了List接口。
Uml图如下:
动态数组的实现方法在 ArrayList类中的一个grow(int minCapacity) 的方法中,代码如下
首先在初始化Arraylist的代码的时候,如果不指定长度,那么会按照默认的长度10来指定这个list的长度,至于为什么要指定这个长度呢?其实就是为了防止在代码中多次的Arrays.copy来复制数组,提高性能的。至于Arraylist的长度,是在add(E e)中的自增的一个size,而并非数组的长度。
作为一个动态数组,我认为在实际的开发过程中,最主要的一个功能是遍历。在arraylist中有为我们提供了一个方法叫iterator()来实现的,iterator
中的方法就一句好,new Itr()。我们来看下,Itr类是的实现,源码如下:
首先定义一个cursor的游标变量,size为Arraylist的长度,如果cursor等于size的是否,hasNext比较返回为 false,那么循环没有必要走下去,next中,用游标找到对应的数组值。观察这个类,可以发现iterator和foreach的一点不同,就是在iterator中提供了一个remove的方法,如果在foreach中删除,并将报ConcurrentModificationException这么一个异常。在Iterator中的处理方式是:在next中记录了一个lastRet的值,在remove中找不并删除。然后把cursor放到lastRet指向的位置。
爱代码,更爱生活。如果有什么错误或者想法交流的,希望大家加我的qq:1416011240。学习不仅仅是知识,还有做人的道理。谢谢
- ArrayList简单的源码分析
- ArrayList的源码简单分析分析
- ArrayList的源码分析
- ArrayList 的源码分析
- ArrayList的迭代器源码分析
- 【Java】ArrayList的源码分析
- ArrayList和LinkedList的源码分析
- ArrayList和LinkedList add的源码分析
- ArrayList源码简单剖析
- ArrayList源码简单理解
- ArrayList源码分析
- ArrayList源码分析
- ArrayList 源码分析
- ArrayList源码分析
- ArrayList LinkedList 源码分析
- ArrayList,LinkedList源码分析
- 源码分析之ArrayList
- ArrayList 源码分析
- 乱得那么认真|阿里小二办公桌上的秘密~内部流出
- 「python」变量以及类型
- java必备基础知识
- 详细介绍Spring Data JPA
- CSS绘制简单图形
- ArrayList简单的源码分析
- 命名实体识别的两种方法
- Android改变图片属性之饱和度
- Kafka的定时消息/任务服务
- 单缓冲和双缓冲的时间计算
- 分页封装类
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- PageHelper集成SpringBoot
- 工具