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最新源码,基于Jdk1.8
ArrayList的源码,写了一些自己的分析,包括jdk1.8的新特性
基于jdk1.8 的ArrayList的源码分析 前言:一说到ArrayList的大家可能立马想到的就是:有序、可重复、查找快但是增删慢、线程不安全。但是具体的原因都不是很清楚,本文就会根据这些问题和大家一起去学习。主要会从...
ArrayList源码阅读笔记 -- 介绍了ArrayList 普通增删改查的过程,从构造空参构造方法,然后添加元素,修改元素,删除元素,获取元素.
一 前言 知识追寻者目前的系列都是基于jdk1.8进行学习分析;...二 ArrayList源码分析 2.2 空参构造方法源码分析 调试代码 public static void main(String[] args) { // 初始化长度为0 ArrayList list =
ArrayList Jdk1.8采用的是数组的数据结构,是非线程安全的一个集合 (多线程下数据不安全),本文章主要讲解ArrayList集合添加和集合扩容,其他方法都相对简单,读懂这个后相信你翻翻源码即可读懂其他方法原理,下面...
Java源码篇之容器类——ArrayList1、前言2、ArrayList的类关系3、...对于平常开发的时候遇到的ArrayList,在此做一个简单的源码阅读记录,JDK1.8版本。 2、ArrayList的类关系 原创文章 13获赞 15访问量 7万+ 关注
JDK1.8源码分析 相关的原始码分析结果会以注解的形式体现到原始码中 已完成部分: ReentrantLock CountDownLatch Semaphore HashMap TreeMap LinkedHashMap ConcurrentHashMap 执行器 ...
|___ArrayList |___LinkedList |___Vector |___Set 无序,不可重复 |___HashSet |___TreeSet JDK不提供此接口的任何直接实现:它提供了更具体的子接口(如Set和List)的实现。 (2)Collection的...
java毕业设计,项目包含完整前后端源码,带数据库sql文件。项目可正常运行! 环境说明: 开发语言:Java 前端框架:小程序 JDK版本:JDK1.8 数据库:mysql 5.7+ 部署容器:tomcat7+ 数据库工具:Navicat11+ 开发...
java jdk1.8 源码 Java-source-reading 缓慢更新一些个人学习java相关源码过程中的笔记,在这里你将不可避免地看到以下情况: 个别不懂/没想好的地方留空待补全 ...ArrayList LinkedList HashMap HashSet LinkedHashMap
1.8 源码 jdk1.8.0_151-源码的中文翻译和一些自己的理解 声明 作者现在大四快要毕业,在实习中,为了在未来成为一名架构师,下定决心开始读Java的源代码;读源码的过程非常难熬,我在以前也曾读过源码,但都坚持的...
List相关实现类的源码解析(JDK1.8) 2018.9.22- List的架构图 ArrayList 继承关系: ArrayList -> AbstractList 实现 List接口 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态...
HashMap(JDK1.8)源码+底层数据结构分析 ConcurrentHashMap 源码+底层数据结构分析 IO IO 基础知识总结 IO 设计模式总结 IO 模型详解 并发 知识点/面试题总结 : (必看 ) Java 并发常见知识点&面试题总结(上) Java ...
HashMap(JDK1.8)源码+底层数据结构分析 ConcurrentHashMap 源码+底层数据结构分析 IO IO 基础知识总结 IO 设计模式总结 IO 模型详解 并发 知识点/面试题总结 : (必看 ) Java 并发常见知识点&面试题总结(上) Java ...
java学习项目,项目可以正常运行,仅供学习使用! jdk用1.8的版本,然后maven用3.6,mysql使用5.7+
源码 2018/3/25 ChangeLogs 初始化仓库,其实这份源码之前有阅读过一点,有一些注释现在正是开始同步写博客分析 Java8 源码 博客地址: ArrayList ctor-3 get set add-2 remove-2 clear addAll write/readObject fast-...
源码 note 笔记 1.Java基础 1.1 关于随机数的生成 1.2 ArrayList clear() 与 removeAll 的实现 1.3 包装类型 1.4 关于JVM 1.5 泛型 1.6 锁 1.7 浮点数 1.8 ArrayList.toArray() 1.9 String 1.10 HTTP 1.11 HashMap 2...