ArrayList(JDK1.9)
一、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)的更多相关文章
- 源码分析--ArrayList(JDK1.8)
ArrayList是开发常用的有序集合,底层为动态数组实现.可以插入null,并允许重复. 下面是源码中一些比较重要属性: 1.ArrayList默认大小10. /** * Default initi ...
- ArrayList实现原理(JDK1.8)
ArrayList实现原理(JDK1.8) public class ArrayList<E> extends AbstractList<E> implements List& ...
- LinkedList实现原理(JDK1.8)
LinkedList实现原理(JDK1.8) LinkedList底层采用双向链表,如果对链表这种结构比较熟悉的话,那LinkedList的实现原理看明白就相当容易. 链表通过"指针&quo ...
- 源码分析(2)-LinkedHashMap(JDK1.8)
1.概述 LinkedHashMap继承自HashMap:在HashMap基础上,通过维护一条双向链表,解决了HashMap键值对遍历顺序和插入顺序一致的问题. 想了解LinkedHashMap源码, ...
- 使用ArrayList时代码内部发生了什么(jdk1.7)?
前言 ArrayList(这里的ArrayList是基于jdk1.7)是在项目中经常使用的集合类,例如我们从数据库中查询出一组数据.这篇文章不去剖析它的继承和实现,只是让我们知道实例化及增删改查时它的 ...
- ArrayList集合(JDK1.8)
简述 List是继承于Collection接口,除了Collection通用的方法以外,扩展了部分只属于List的方法. 常用子类 ?ArrayList介绍 1.数据结构 其底层的数据结构是数组,数 ...
- Java集合:ArrayList (JDK1.8 源码解读)
ArrayList ArrayList几乎是每个java开发者最常用也是最熟悉的集合,看到ArrayList这个名字就知道,它必然是以数组方式实现的集合 关注点 说一下ArrayList的几个特点,也 ...
- ArrayList源码浅析(jdk1.8)
ArrayList的实质就是动态数组.所以可以通过下标准确的找到目标元素,因此查找的效率高.但是添加或删除元素会涉及到大量元素的位置移动,所以效率低. 一.构造方法 ArrayList提供了3个构造方 ...
- ArrayList源码解析(JDK1.8)
package java.util; import sun.misc.SharedSecrets; import java.util.function.Consumer; import java.ut ...
随机推荐
- html5播放器制作小结
链接:http://snowinmay.net/6rooms/html/music.php 9月份前的版本: 播放,暂停,点赞,播放状态显示. 9.2版本: 下载歌曲,静音,时间倒计时(点击暂停时倒计 ...
- 有向图的强联通tarjan算法(判断是否为强联通模板)(hdu1269)
hdu1269 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...
- PAT甲1077 Kuchiguse【字符串】【暴力】【Hash】【二分】
1077 Kuchiguse (20 分) The Japanese language is notorious for its sentence ending particles. Personal ...
- poj2492 A Bug's Life【并查集】
Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assume ...
- Django的视图与网址之加法计算
在最新的Django2.1中,views.py中采用的地址映射方式发生了变化,通过一个加法运算我们来看一看. 方法一:在视图views.py中定义视图逻辑,求解两个数的加法运算:c = a + b,定 ...
- CCCC L2 部落 L3社交集群
https://www.patest.cn/contests/gplt/L2-024 题解:部落是并查集模板题. 社交集群用并查集暴力有23分 坑:写了半天,发现自己并查集没怎么学明白,现在才搞懂: ...
- free详解
用法: [oracle@server36 ~]$ free -help free: invalid option -- h usage: free [-b|-k|-m|-g] [-l] [-o] [- ...
- JS 防止表单重复提交的方法
第一种:用flag标识,下面的代码设置checkSubmitFlg标志: <script language="”JavaScript”"> var checkSubmi ...
- 实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC)的形式,共享在另外一个2008服务器上
转载:http://www.cnblogs.com/top5/archive/2012/12/10/2812133.html 目的:实现一个2008serve的IIS的虚拟目录(通过网络路径(UNC) ...
- PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
现在数据库里面有一组数据,我们将它按照不同的难度进行分sheet. 首先我们需要写一个mysql的配置文件- db.config.php(utf-8编码) : <?php $dbconfig= ...