一、ArrayList概念。

1、数据结构。它是一个数组,可以动态增长的数组。

2、继承实现关系图。继承抽象List,实现List、随机方法、克隆、序列化。

3、

二、内部类。

final class ArrayListSpliterator implements Spliterator<E>
private class Itr implements Iterator<E>
private class ListItr extends Itr implements ListIterator<E>
private static class SubList<E> extends AbstractList<E> implements RandomAccess

三、成员变量。

1、数组elementData。是最重要的成员。存放真实数据。

2、大小size。数组中已经存放的元素个数,而elementData.length表示数组的大小,显然size <= elementData.length。当两者相等则需要扩容。

3、数组的默认容量DEFAULT_CAPACITY。

4、数组最大容量MAX_ARRAY_SIZE。

5、空数组EMPTY_ELEMENTDATA。用户指定容量为0时返回的。

6、默认容量的空数组DEFAULTCAPACITY_EMPTY_ELEMENTDATA。

7、序列号。

3、

3、

四、成员方法。

1、构造方法1。指定数组大小。检查容量参数的合法性。确定数组大小。

2、构造方法2。不指定容量。则为空数组。

3、构造方法3。用一个集合初始化。

4、get方法。先检查参数,主要是数组下标是否越界处理。

5、扩容方法。新的容量 = 旧容量 + 旧容量/2;

新增数据的相关方法:

6、在尾部添加一个新元素。(检测是否扩容)

7、指定位置处添加元素。(检查索引合法性,必须在[0,size]范围内)

8、在尾部添加多个新元素的集合。(检测是否扩容)

9、在指定位置处开始添加多个新元素的集合。(检测是否扩容)

删除元素的相关操作:

10、删除指定位置处的元素。(检查索引合法性;复制覆盖,返回删除的数据)

11、删除指定的元素。(不存在该元素则返回false,否则返回true)

12、删除所有元素。

更新数据的相关操作:

13、更新指定位置处的元素。(检查索引合法性、保存旧的数据、新数据覆盖,返回旧数据)

查找元素的相关操作:

14、获取指定位置处的元素。

15、获取指定元素的第一个索引。(不存在则返回-1)

16、获取指定元素的倒数第一个索引。(不存在则返回-1)

17、是否存在指定元素。

其他相关操作:

18、是否为空。

19、集合大小。

20、更改数组大小为实际元素个数的大小一样大,即size == elementData.length。

4、

4、

3、

4、

3、

4、

3、

4、

ArrayList(JDK1.9)的更多相关文章

  1. 源码分析--ArrayList(JDK1.8)

    ArrayList是开发常用的有序集合,底层为动态数组实现.可以插入null,并允许重复. 下面是源码中一些比较重要属性: 1.ArrayList默认大小10. /** * Default initi ...

  2. ArrayList实现原理(JDK1.8)

    ArrayList实现原理(JDK1.8) public class ArrayList<E> extends AbstractList<E> implements List& ...

  3. LinkedList实现原理(JDK1.8)

    LinkedList实现原理(JDK1.8) LinkedList底层采用双向链表,如果对链表这种结构比较熟悉的话,那LinkedList的实现原理看明白就相当容易. 链表通过"指针&quo ...

  4. 源码分析(2)-LinkedHashMap(JDK1.8)

    1.概述 LinkedHashMap继承自HashMap:在HashMap基础上,通过维护一条双向链表,解决了HashMap键值对遍历顺序和插入顺序一致的问题. 想了解LinkedHashMap源码, ...

  5. 使用ArrayList时代码内部发生了什么(jdk1.7)?

    前言 ArrayList(这里的ArrayList是基于jdk1.7)是在项目中经常使用的集合类,例如我们从数据库中查询出一组数据.这篇文章不去剖析它的继承和实现,只是让我们知道实例化及增删改查时它的 ...

  6. ArrayList集合(JDK1.8)

    简述 List是继承于Collection接口,除了Collection通用的方法以外,扩展了部分只属于List的方法. 常用子类  ?ArrayList介绍 1.数据结构 其底层的数据结构是数组,数 ...

  7. Java集合:ArrayList (JDK1.8 源码解读)

    ArrayList ArrayList几乎是每个java开发者最常用也是最熟悉的集合,看到ArrayList这个名字就知道,它必然是以数组方式实现的集合 关注点 说一下ArrayList的几个特点,也 ...

  8. ArrayList源码浅析(jdk1.8)

    ArrayList的实质就是动态数组.所以可以通过下标准确的找到目标元素,因此查找的效率高.但是添加或删除元素会涉及到大量元素的位置移动,所以效率低. 一.构造方法 ArrayList提供了3个构造方 ...

  9. ArrayList源码解析(JDK1.8)

    package java.util; import sun.misc.SharedSecrets; import java.util.function.Consumer; import java.ut ...

随机推荐

  1. oracle如何删除表空间

    drop tablespace 表空间名 including contents and datafiles cascade constraint; ............. 以system用户登录, ...

  2. visual studio 2013设置背景图片

    今天听了公司的一个经验分享会,发现VS竟然可以设置背景图片!还是个萌妹子!!被萌了一脸鼻血!!! 设置方法很简单:安装扩展ClaudiaIDE 1.在这里下载扩展,https://visualstud ...

  3. yii---实现加一或减一

    废话少说,直接看: /** * 添加帖子的浏览数 * @author fyz */ public function addViewNum($threadId){ $list = ForumThread ...

  4. 国外很有多优秀的HTML5前端开发框架

    国外很有多优秀的HTML5前端开发框架 相信大家都耳熟能详:JQuery Mobile,Twitter Bootstrap, Schena Touch,  BackBone等等. 同样,也存在很多国内 ...

  5. bootstrapValidator remote 的接受 验证 值

    本来之前也做过一次这样的验,但可能是这两天太热脑袋不够用了,于是就只有看看源码咯 that.updateStatus(updateAll ? $f.attr('data-bv-field') : $f ...

  6. 浙江工业大学校赛 小M和天平

    小M和天平 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. PAT甲1101 Quick Sort

    1101 Quick Sort (25 分) There is a classical process named partition in the famous quick sort algorit ...

  8. codeforces 586B/C

    题目链接:http://codeforces.com/contest/586/problem/B B. Laurenty and Shop time limit per test 1 second m ...

  9. oracle trunc 函数处理日期格式,日期类型很有用的几个sql

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  --显示当前时间2011-12-29 16:24:34 select trunc ...

  10. hadoop的两类配置文件及3种启动/关闭方式

    hadoop配置文件 默认配置文件:四个模块相对应的jar包中:$HADOOP_HOME/share/hadoop        *core-default.xml        *hdfs-defa ...