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 ...
随机推荐
- mysqlslap 压测工具使用说明
PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...
- C# 日志系统 log4net 配置及使用
1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...
- SDK Location not found Android Studio + Gradle
extends: http://stackoverflow.com/questions/19272127/sdk-location-not-found-android-studio-gradle I ...
- chrome扩展写法
最近看到公司同事经常写chrome扩展,来提高生成效率,回想想自己以前也写过chrome扩展,但是由于不经常写,也没做积累也都忘记了,现在重新回顾一下. 一.chrome扩展基本概念 chrome扩展 ...
- jquery如何让checkbox如何取消勾选
1.取消勾选 $("checkbox").attr("checked", false); 2.勾选 $("checkbox").attr(& ...
- SAP全球企业官孙小群的生活智慧
转自:http://www.programmer.com.cn/15373/ 一下为程序员杂志对孙小群(Xiaoqun Clever)的采访. 最早接触计算机是在高中,那时发现通过一个小小的Basic ...
- 吐槽win8
想吐槽win8好久了!今天终于忍不住,得喷一下以泻心头之愤. 文件拷贝动辄失败!? 但凡是我从远程往本地拷大程序,此时文件系统变得奇慢无比,而且本地也不能打开大文件或者往外拷贝,否则一不小心就出现拷贝 ...
- iOS - Block的简单使用
Block 的使用有两种: .独立Block .内联Block <一>独立Block 使用方式 一.定义一个Block Object,并调用. 1.定义 // 定义一个Bl ...
- 8.17 一个博客demo
2018-8-17 18:13:27 明天周末准备整理一下看看我的博客!!! 说一下思路 1.先搭建框架 1.1 大体分成两块div 左右两部分 <div class="left&qu ...
- hdu5692【dfs序】【线段树】
Snacks Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...