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、

igoodful@qq.com
原文地址:https://www.cnblogs.com/igoodful/p/8909505.html