1 new ArrayList() 时,将内部DEFAULTCAPACITY_EMPTY_ELEMENTDATA赋值给 elmentData数组。
2 add(E e)时,调用ensureCapacityInternal(size +1),此时size 为0,minCapacity为10,(DEFAULT_CAPACITY为10,取DEFAULT_CAPACITY和minCapacity之间最大值)。
modCount++;如果minCapacity > 当前elementData.length,调用grow(minCapacity) int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); 即 新容量是旧容量1.5倍, elementData = Arrays.copyOf(elementData, newCapacity);
elementData[size++] = e;
3 size() 直接返回size
4 contains(E e) 返回 indexOf(e )>=0
5 indexOf(E e) 先判断e是否为null,遍历elementData,返回第一个等于e(null)的index,没有返回-1
6 remove(int index) 先rangeCheck(index),如果index>size 抛IndexOutOfBoundsException
modCount++;
取到index对应元素,通过System.arraycopy将index后面的元素前移一位,将size前一个元素赋值为null,
返回删除的对象
7 lastIndexOf(Object o) indexOf的倒序实现,从后向前比对。
8 clear()
modCount++;
// clear to let GC do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
相关推荐
### ArrayList源码解析(JDK 1.8) #### 概述 `ArrayList`是Java集合框架中的一个核心组件,它提供了动态数组的功能。与固定大小的数组不同,`ArrayList`可以随着元素的增加而自动扩展其容量。在JDK 1.8中,`...
通过以上对ArrayList源码的分析,可以总结出如下关键知识点: 1. ArrayList的实现基于动态数组,可以动态地进行容量的调整; 2. ArrayList具有默认初始化容量10,以及无参构造时延迟初始化的特性; 3. ArrayList...
这个"jdk1.8 sun源码"压缩包很可能包含了这些未公开的Sun Microsystems的源代码,使得开发者有机会深入研究Java平台的内部工作原理,这对于进行底层优化、理解和调试Java程序有着极大的帮助。然而,值得注意的是,...
ArrayList源码阅读笔记 -- 介绍了ArrayList 普通增删改查的过程,从构造空参构造方法,然后添加元素,修改元素,删除元素,获取元素.
《硬核ArrayList源码分析——深入理解Java集合框架》 ArrayList是Java集合框架中的一个重要组成部分,它是基于动态数组实现的列表。在Java 1.8版本中,ArrayList的实现细节和内部工作原理对于理解其性能和行为至关...
- **理解API底层实现**: 通过阅读源码,可以深入理解常用API的工作原理,如ArrayList如何动态扩容,HashMap如何实现快速查找等。 - **优化代码**: 了解系统内部开销,可以帮助编写更高效的代码,避免不必要的性能...
2. **集合框架**:`java.util`包中的`ArrayList`、`LinkedList`、`HashMap`、`HashSet`等数据结构的实现,这些是日常编程中最常用的工具。源码可以帮助理解它们的性能特性,比如插入、删除、查找的时间复杂度。 3. ...
JDK 1.8的源码中包含了很多关键的Java类库,如基础集合框架(如ArrayList, HashMap)、并发工具类、IO流、网络编程API以及重要的语言新特性。以下是JDK 1.8中的一些重要知识点: 1. **Lambda表达式**:这是JDK 1.8...
Java Development Kit (JDK) 1.8 是Java编程语言的一个关键版本,它引入了许多重要的特性和改进。...对于希望深入理解Java并成为更好的开发者的程序员来说,JDK 1.8源码的探索是一次不可或缺的学习之旅。
Java 1.8源码是Java开发人员深入理解平台内部工作原理的重要资源。它包含了Java标准版(Javase)的各类核心库源代码,这些库是构建Java应用程序的基础。让我们一起探讨一下Java 1.8中的一些关键知识点,以及在`javax...
《深入解析JDK1.8源码》 JDK,全称Java Development Kit,是Java编程语言的核心组件,为开发者提供了完整的开发环境和运行环境。JDK1.8作为Java历史上的一个重要版本,引入了许多创新特性,提升了开发效率并优化了...
Java JDK 1.8 源码新手教程资料是一份宝贵的学习资源,它包含了Java开发工具包的关键组件的源代码,让开发者能够深入理解Java语言的底层实现和工作原理。对于初学者而言,掌握这些源码是提升技能、增强问题解决能力...
**JDK 1.8 源码详解** JDK(Java Development Kit)是Java编程语言的核心组件,它包含了编译器、运行时环境、工具集合以及Java API库。JDK 1.8,也被称为Java 8,是Oracle公司发布的一个重要版本,引入了许多创新...
《深入解析JDK1.8源码》 JDK(Java Development Kit)是Java开发工具集,其中包含了Java运行环境、编译器以及各种工具,是Java开发者的重要基础。JDK1.8作为Java发展历程中的一个重要版本,引入了许多创新特性,如...
在JDK 1.8中,集合框架已经相当成熟和完善,包括List、Set、Queue、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。本篇文章将深入探讨这些集合类的源码,揭示其内部实现机制。 首先,我们来看`...
ArrayList是基于动态数组实现的,其底层源码(JDK 1.7和1.8)显示,它通过在需要时增加数组大小来扩展容量。在JDK 1.8中,为了优化插入性能,新增了尾部插入的优化。 Vector与ArrayList类似,也是基于数组实现,但...
java jdk1.8 源码 Java-source-reading 缓慢更新一些个人学习java相关源码过程中的笔记,在这里你将不可避免地看到以下情况: 个别不懂/没想好的地方留空待补全 ...ArrayList LinkedList HashMap HashSet LinkedHashMap