Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
清新范er
JavaGuide
提交
9ad273ab
J
JavaGuide
项目概览
清新范er
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
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,发现更多精彩内容 >>
未验证
提交
9ad273ab
编写于
8月 10, 2018
作者:
S
Snailclimb
提交者:
GitHub
8月 10, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update ArrayList.md
上级
ae4f2acc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
9 deletion
+9
-9
Java相关/ArrayList.md
Java相关/ArrayList.md
+9
-9
未找到文件。
Java相关/ArrayList.md
浏览文件 @
9ad273ab
<!-- MarkdownTOC -->
-
[
ArrayList简介
:
](
#ArrayL
ist简介
)
-
[
ArrayList核心源码
:
](
#ArrayL
ist核心源码
)
-
[
ArrayList源码分析
:
](
#ArrayL
ist源码分析
)
-
[
ArrayList简介
](
#arrayl
ist简介
)
-
[
ArrayList核心源码
](
#arrayl
ist核心源码
)
-
[
ArrayList源码分析
](
#arrayl
ist源码分析
)
-
[
System.arraycopy\(\)和Arrays.copyOf\(\)方法
](
#systemarraycopy和arrayscopyof方法
)
-
[
两者联系与区别
:
](
#两者联系与区别:
)
-
[
ArrayList核心扩容技术
](
#
ArrayL
ist核心扩容技术
)
-
[
两者联系与区别
](
#两者联系与区别
)
-
[
ArrayList核心扩容技术
](
#
arrayl
ist核心扩容技术
)
-
[
内部类
](
#内部类
)
-
[
ArrayList经典Demo
:
](
#ArrayL
ist经典demo
)
-
[
ArrayList经典Demo
](
#arrayl
ist经典demo
)
<!-- /MarkdownTOC -->
### <font face="楷体" id="3">
ArrayList简介</font>
### <font face="楷体" id="3">ArrayList简介</font>
ArrayList 的底层是数组队列,相当于
<font
color=
"red"
>
动态数组
</font>
。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用
<font
color=
"red"
>
ensureCapacity
</font>
操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。它继承于
**AbstractList**
,实现了
**List**
,
**RandomAccess**
,
**Cloneable**
,
**java.io.Serializable**
这些接口。
在我们学数据结构的时候就知道了线性表的顺序存储,插入删除元素的时间复杂度为
**O(n)**
,求表长以及增加元素,取第 i 元素的时间复杂度为
**O(1)**
ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
...
...
@@ -21,7 +21,7 @@
ArrayList 实现了
**Cloneable接口**
,即覆盖了函数clone(),
**能被克隆**
。
ArrayList 实现
**java.io.Serializable接口**
,这意味着ArrayList
**支持序列化**
,
**能通过序列化去传输**
。
和Vector不同,
**ArrayList中的操作不是线程安全的**
!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。
### <font face="楷体" id="4">
ArrayList核心源码</font>
### <font face="楷体" id="4">ArrayList核心源码</font>
```
java
package
java.util
;
...
...
@@ -557,7 +557,7 @@ public class ArrayList<E> extends AbstractList<E>
return
Arrays
.
copyOf
(
elementData
,
size
);
}
```
##### 两者联系与区别
:
##### 两者联系与区别
**联系:**
看两者源代码可以发现
<font
color=
"red"
>
copyOf()
</font>
内部调用了
<font
color=
"red"
>
System.arraycopy()
</font>
方法
**区别:**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录