|
1 | 1 |
|
2 | 2 | <!-- MarkdownTOC -->
|
3 | 3 |
|
4 |
| -- [ArrayList简介:](#ArrayList简介) |
5 |
| -- [ArrayList核心源码:](#ArrayList核心源码) |
6 |
| -- [ArrayList源码分析:](#ArrayList源码分析) |
| 4 | +- [ArrayList简介](#arraylist简介) |
| 5 | +- [ArrayList核心源码](#arraylist核心源码) |
| 6 | +- [ArrayList源码分析](#arraylist源码分析) |
7 | 7 | - [System.arraycopy\(\)和Arrays.copyOf\(\)方法](#systemarraycopy和arrayscopyof方法)
|
8 |
| - - [两者联系与区别:](#两者联系与区别:) |
9 |
| - - [ArrayList核心扩容技术](#ArrayList核心扩容技术) |
| 8 | + - [两者联系与区别](#两者联系与区别) |
| 9 | + - [ArrayList核心扩容技术](#arraylist核心扩容技术) |
10 | 10 | - [内部类](#内部类)
|
11 |
| -- [ArrayList经典Demo:](#ArrayList经典demo) |
| 11 | +- [ArrayList经典Demo](#arraylist经典demo) |
12 | 12 |
|
13 | 13 | <!-- /MarkdownTOC -->
|
14 | 14 |
|
15 | 15 |
|
16 |
| -### <font face="楷体" id="3"> ArrayList简介</font> |
| 16 | +### <font face="楷体" id="3">ArrayList简介</font> |
17 | 17 | ArrayList 的底层是数组队列,相当于<font color="red">动态数组</font>。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用<font color="red">ensureCapacity </font>操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。它继承于**AbstractList**,实现了**List**, **RandomAccess**, **Cloneable**, **java.io.Serializable**这些接口。
|
18 | 18 | 在我们学数据结构的时候就知道了线性表的顺序存储,插入删除元素的时间复杂度为**O(n)**,求表长以及增加元素,取第 i 元素的时间复杂度为**O(1)**
|
19 | 19 | ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
|
20 | 20 | ArrayList 实现了**RandmoAccess接口**,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供**快速访问功能**的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。
|
21 | 21 | ArrayList 实现了**Cloneable接口**,即覆盖了函数clone(),**能被克隆**。
|
22 | 22 | ArrayList 实现**java.io.Serializable接口**,这意味着ArrayList**支持序列化**,**能通过序列化去传输**。
|
23 | 23 | 和Vector不同,**ArrayList中的操作不是线程安全的**!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。
|
24 |
| -### <font face="楷体" id="4"> ArrayList核心源码</font> |
| 24 | +### <font face="楷体" id="4">ArrayList核心源码</font> |
25 | 25 | ```java
|
26 | 26 | package java.util;
|
27 | 27 |
|
@@ -557,7 +557,7 @@ public class ArrayList<E> extends AbstractList<E>
|
557 | 557 | return Arrays.copyOf(elementData, size);
|
558 | 558 | }
|
559 | 559 | ```
|
560 |
| -##### 两者联系与区别: |
| 560 | +##### 两者联系与区别 |
561 | 561 | **联系:**
|
562 | 562 | 看两者源代码可以发现<font color="red">copyOf()</font>内部调用了<font color="red">System.arraycopy()</font>方法
|
563 | 563 | **区别:**
|
|
0 commit comments