如何正确的使用ArrayList

  介绍

今天就跟大家聊聊有关如何正确的使用ArrayList,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强> ArrayList简介

ArrayList是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了列表,RandomAccess,可克隆,io。序列化这些接口。

ArrayList继承了AbstractList,实现了列表。它是一个数组队列,提供了相关的添加,删除,修改,遍历等功能。

ArrayList实现了RandmoAccess接口,即提供了随机访问功能.RandmoAccess是java中用来被列表实现,为列表提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。稍后,我们会比较列表的“快速随机访问”和“通过迭代器迭代器访问”的效率。

ArrayList实现了可克隆接口,即覆盖了函数克隆(),能被克隆。

ArrayList实现java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。和矢量不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择向量或者CopyOnWriteArrayList只

<强> ArrayList构造函数,

//默认构造函数
  ArrayList ()//容量是ArrayList的默认容量大小。当由于增加数据导致容量不足时,容量会添加上一次容量大小的一半。
  ArrayList (int容量)//创建一个包含收集的ArrayList
  ArrayList (Collection<及# 63;E>延伸;收集)

<强> ArrayList的API 

//集合中定义的API
  布尔加(E对象)
  布尔addAll (Collection<及# 63;E>延伸;收集)
  空白clear ()
  布尔包含对象(对象)
  布尔containsAll (Collection<及# 63;比;收集)
  布尔=(对象对象)
  int hashCode ()
  布尔isEmpty ()
  Iterator迭代器()
  逻辑删除对象(对象)
  布尔removeAll (Collection<及# 63;比;收集)
  布尔retainAll (Collection<及# 63;比;收集)
  int大小()
  & lt; T>T [] toArray (T[]数组)
  对象[]toArray ()//AbstractCollection中定义的API
  空白添加(int位置,E对象)
  布尔addAll (int位置,Collection<及# 63;E>延伸;收集)
  E (int位置)
  int indexOf(对象对象)
  int lastIndexOf对象(对象)
  ListIteratorlistIterator (int位置)
  ListIteratorlistIterator ()
  E删除(int位置)
  E组(int位置,E对象)
  List分表(int, int)//ArrayList新增的API
  对象克隆()
  空白ensureCapacity (int minimumCapacity)
  空白trimToSize ()
  空白removeRange (int fromIndex int toIndex) 

<强> ArrayList的继承关系

java . lang . object   java.util.AbstractCollection   java.util.AbstractList   java.util.ArrayList   公开课ArrayList扩展AbstractList   实现List

ArrayList与收集关系如下图:

如何正确的使用ArrayList

ArrayList包含了两个重要的对象:。

(1) elementData是“对象[]类型的数组“,它保存了添加到ArrayList中的元素。实际上,elementData是个动态数组,我们能通过构造函数ArrayList (int initialCapacity)来执行它的初始容量为initialCapacity;如果通过不含参数的构造函数ArrayList()来创建ArrayList,则elementData的容量默认是10. elementData数组的大小会根据ArrayList容量的增长而动态的增长,具体的增长方式,请参考源码分析中的ensureCapacity()函数。

(2)大小则是动态数组的实际大小只

为了更了解ArrayList的原理,下面对ArrayList源码代码作出分析.ArrayList是通过数组实现的,源码比较容易理解只,,

包java.util;
  公开课ArrayList扩展AbstractList
  实现List如何正确的使用ArrayList