From 9ad273ab437ebb273ac0242bb36f8b82c6a7da1a Mon Sep 17 00:00:00 2001 From: Snailclimb Date: Fri, 10 Aug 2018 07:39:35 +0800 Subject: [PATCH] Update ArrayList.md --- Java相关/ArrayList.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Java相关/ArrayList.md b/Java相关/ArrayList.md index 43081f79..aa52dbd7 100644 --- a/Java相关/ArrayList.md +++ b/Java相关/ArrayList.md @@ -1,19 +1,19 @@ -- [ArrayList简介:](#ArrayList简介) -- [ArrayList核心源码:](#ArrayList核心源码) -- [ArrayList源码分析:](#ArrayList源码分析) +- [ArrayList简介](#arraylist简介) +- [ArrayList核心源码](#arraylist核心源码) +- [ArrayList源码分析](#arraylist源码分析) - [System.arraycopy\(\)和Arrays.copyOf\(\)方法](#systemarraycopy和arrayscopyof方法) - - [两者联系与区别:](#两者联系与区别:) - - [ArrayList核心扩容技术](#ArrayList核心扩容技术) + - [两者联系与区别](#两者联系与区别) + - [ArrayList核心扩容技术](#arraylist核心扩容技术) - [内部类](#内部类) -- [ArrayList经典Demo:](#ArrayList经典demo) +- [ArrayList经典Demo](#arraylist经典demo) -### ArrayList简介 +### ArrayList简介   ArrayList 的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity 操作来增加 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。 -### ArrayList核心源码 +### ArrayList核心源码 ```java package java.util; @@ -557,7 +557,7 @@ public class ArrayList extends AbstractList return Arrays.copyOf(elementData, size); } ``` -##### 两者联系与区别: +##### 两者联系与区别 **联系:** 看两者源代码可以发现copyOf()内部调用了System.arraycopy()方法 **区别:**