Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Coudy Hou
JavaGuide
提交
cc425cda
J
JavaGuide
项目概览
Coudy Hou
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cc425cda
编写于
6月 06, 2020
作者:
Y
yazhouasu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update ArrayList.md
上级
d3edd36a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
11 deletion
+14
-11
docs/java/collection/ArrayList.md
docs/java/collection/ArrayList.md
+14
-11
未找到文件。
docs/java/collection/ArrayList.md
浏览文件 @
cc425cda
...
...
@@ -68,23 +68,25 @@ public class ArrayList<E> extends AbstractList<E>
private
int
size
;
/**
* 带初始容量参数的构造函数
。(用户自己指定容量
)
* 带初始容量参数的构造函数
(用户可以在创建ArrayList对象时自己指定集合的初始大小
)
*/
public
ArrayList
(
int
initialCapacity
)
{
if
(
initialCapacity
>
0
)
{
//创建initialCapacity大小的数组
//
如果传入的参数大于0,
创建initialCapacity大小的数组
this
.
elementData
=
new
Object
[
initialCapacity
];
}
else
if
(
initialCapacity
==
0
)
{
//创建空数组
//
如果传入的参数等于0,
创建空数组
this
.
elementData
=
EMPTY_ELEMENTDATA
;
}
else
{
//其他情况,抛出异常
throw
new
IllegalArgumentException
(
"Illegal Capacity: "
+
initialCapacity
);
}
}
/**
*默认构造函数,DEFAULTCAPACITY_EMPTY_ELEMENTDATA 为0.初始化为10,也就是说初始其实是空数组 当添加第一个元素的时候数组容量才变成10
*默认无参构造函数
*DEFAULTCAPACITY_EMPTY_ELEMENTDATA 为0.初始化为10,也就是说初始其实是空数组 当添加第一个元素的时候数组容量才变成10
*/
public
ArrayList
()
{
this
.
elementData
=
DEFAULTCAPACITY_EMPTY_ELEMENTDATA
;
...
...
@@ -94,16 +96,16 @@ public class ArrayList<E> extends AbstractList<E>
* 构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
*/
public
ArrayList
(
Collection
<?
extends
E
>
c
)
{
//
//
将指定集合转换为数组
elementData
=
c
.
toArray
();
//如果
指定集合元素个数
不为0
//如果
elementData数组的长度
不为0
if
((
size
=
elementData
.
length
)
!=
0
)
{
// c.toArray 可能返回的不是Object类型的数组所以加上下面的语句用于判断,
//这里用到了反射里面的getClass()方法
// 如果elementData不是Object类型数据(c.toArray可能返回的不是Object类型的数组所以加上下面的语句用于判断)
if
(
elementData
.
getClass
()
!=
Object
[].
class
)
//将原来不是Object类型的elementData数组的内容,赋值给新的Object类型的elementData数组
elementData
=
Arrays
.
copyOf
(
elementData
,
size
,
Object
[].
class
);
}
else
{
// 用空数组代替
//
其他情况,
用空数组代替
this
.
elementData
=
EMPTY_ELEMENTDATA
;
}
}
...
...
@@ -127,13 +129,14 @@ public class ArrayList<E> extends AbstractList<E>
* @param minCapacity 所需的最小容量
*/
public
void
ensureCapacity
(
int
minCapacity
)
{
//如果是true,minExpand的值为0,如果是false,minExpand的值为10
int
minExpand
=
(
elementData
!=
DEFAULTCAPACITY_EMPTY_ELEMENTDATA
)
// any size if not default element table
?
0
// larger than default for default empty table. It's already
// supposed to be at default size.
:
DEFAULT_CAPACITY
;
//如果最小容量大于已有的最大容量
if
(
minCapacity
>
minExpand
)
{
ensureExplicitCapacity
(
minCapacity
);
}
...
...
@@ -141,7 +144,7 @@ public class ArrayList<E> extends AbstractList<E>
//得到最小扩容量
private
void
ensureCapacityInternal
(
int
minCapacity
)
{
if
(
elementData
==
DEFAULTCAPACITY_EMPTY_ELEMENTDATA
)
{
// 获取
默认的容量和传入参数的较
大值
// 获取
“默认的容量”和“传入参数”两者之间的最
大值
minCapacity
=
Math
.
max
(
DEFAULT_CAPACITY
,
minCapacity
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录