[SoOnPerson] 源代码的学习之ArrayList类
写这个文章的目的主要是可以记录一下自己的学习,新方向的第一步吧。有不对的地方可以说出来,我再研究。查看了一下JDK_API_1_6_zh_CN.CHM文档在我的使用中,ArrayList 是我用的最多的,上面的文档中写的, 1. ArrayList 是大小(长度)可以动态改变的数组,传统的数组中,只能一开始就给定好一个长度,不能修改 2.关于算法的时间复杂度,我也不太会解释,emmmm
写这个文章的目的主要是可以记录一下自己的学习,新方向的第一步吧。有不对的地方可以说出来,我再研究。
查看了一下JDK_API_1_6_zh_CN.CHM文档
在我的使用中,ArrayList 是我用的最多的,上面的文档中写的,
1. ArrayList 是大小(长度)可以动态改变的数组,传统的数组中,只能一开始就给定好一个长度,不能修改
2.关于算法的时间复杂度,我也不太会解释,emmmmm
3.在要添加大量元素的时候,最好不要傻乎乎的去一个个的add,可以用ensureCapacity设置缓冲区大小,也就是长度
4.对于迭代器,就不乱说了,不能误人子弟啊。
让我们来看一下源代码:
这个是遇到的第一个函数,也是一个带有参数的构造函数
上面有他的解释:
创建一个带有初始大小的空列表
参数的意思是初始的大小
如果参数是负数就会抛出异常
函数内部:
判断就不说了
都是把一个object数组赋给了this.elementData 看一下这个属性
是一个非私有的属性。用的是transient修饰符,意思是不参与序列化过程,有一个专门说这个的文章:
上面的注释的意思大概是:
数组缓冲区中存储ArrayList元素的数组缓冲区,ArrayList的容量是这个数组缓冲区的长度,任何空的arraylist ,这个变量==空的object数组,当加了第一个元素的时候,将扩大到10
对着这个解释,大概可以看出来这个这个变量,是ArrayList可以动态改变大小的核心,transient修饰,让他可以改变。并且决定了ArrayList的容量。
第二个函数:无参数的构造函数,我自己用的蛮多的。注释的意思:创建一个长度为10的空列表
看了一个后面的那个常量,却是一个长度为0的数组。
测试了一下:
结果为0,可能是他的注释写错了?
第三个函数,也是最后一个构造函数了
构造一个包含指定元素的列表的列表集合,按照集合的迭代器的顺序返回
参数是要放入的集合,如果要放入的参数是null,抛出异常,但是好像没有抛出什么呀。@NotNull 是避免nullpointerException的,后面的是什么嘛,我看不懂。
后面的内容就是把参数赋值给变量了
后面的几个我感觉不怎么常用,就不写了。
写几个常用的吧
返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。区分了参数为null的情况
获取指定位置上的元素,0开始,rangecheck是判断参数是否大于了数组长度,大于的话抛出异常,没有的话,返回值
重新设置长度内的某一个位置的元素。index是位置0开始,element要设置的元素,
判断位置是否正确,取得被替换的值并返回,设置值
在最后插入一个元素
在指定位置插入元素
置空列表
大概就这么了,函数太多了,api中有大概的解释
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)