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 ...
随机推荐
- oracle如何删除表空间
drop tablespace 表空间名 including contents and datafiles cascade constraint; ............. 以system用户登录, ...
- visual studio 2013设置背景图片
今天听了公司的一个经验分享会,发现VS竟然可以设置背景图片!还是个萌妹子!!被萌了一脸鼻血!!! 设置方法很简单:安装扩展ClaudiaIDE 1.在这里下载扩展,https://visualstud ...
- yii---实现加一或减一
废话少说,直接看: /** * 添加帖子的浏览数 * @author fyz */ public function addViewNum($threadId){ $list = ForumThread ...
- 国外很有多优秀的HTML5前端开发框架
国外很有多优秀的HTML5前端开发框架 相信大家都耳熟能详:JQuery Mobile,Twitter Bootstrap, Schena Touch, BackBone等等. 同样,也存在很多国内 ...
- bootstrapValidator remote 的接受 验证 值
本来之前也做过一次这样的验,但可能是这两天太热脑袋不够用了,于是就只有看看源码咯 that.updateStatus(updateAll ? $f.attr('data-bv-field') : $f ...
- 浙江工业大学校赛 小M和天平
小M和天平 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- PAT甲1101 Quick Sort
1101 Quick Sort (25 分) There is a classical process named partition in the famous quick sort algorit ...
- codeforces 586B/C
题目链接:http://codeforces.com/contest/586/problem/B B. Laurenty and Shop time limit per test 1 second m ...
- oracle trunc 函数处理日期格式,日期类型很有用的几个sql
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; --显示当前时间2011-12-29 16:24:34 select trunc ...
- hadoop的两类配置文件及3种启动/关闭方式
hadoop配置文件 默认配置文件:四个模块相对应的jar包中:$HADOOP_HOME/share/hadoop *core-default.xml *hdfs-defa ...