java.util.ArrayList学习

本文详细介绍了Java中ArrayList类的实现原理及使用方法,包括其内部结构、容量管理、构造方法及核心API,如clone、ensureCapacity等。

 java.lang.Object

     java.util.AbstractCollection

         java.util.AbstractList

             java.util.ArrayListr

  public class ArrayList extends AbstractList
implements list,RandomAccess,Cloneable,Serializable ;
List接口的大小可变数组的实现,实现了所有可选列表操作,并允许包含null在内的所有元素.
每个ArrayList实例都有一个容量(Capacity),该容量是指用来存储列表元素的数组的大小,它总是至少等于列表的大小.在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList的容量,这样可以减少递增式再分配的数量.
此实现不是同步的.如果多个线程同时访问一个ArrayList实例,而其中至少有一个改变了列表,那么它必须保持外部同步.
List list = Collections.synchronizedList(new ArrayList(...));
此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不是冒着在将来某个不确定时间发生任意不确定行为的风险。
    从类 java.util.AbstractList 继承的字段
protected transient int modCount
已从结构上修改此列表的次数。从结构上修改是指更改列表的大小,或者以其他方式打乱列表,使正在进行的迭代产生错误的结果。
此字段由 iterator 和 listIterator 方法返回的迭代器和列表迭代器实现来使用。如果意外更改了此字段中的值,则迭代器(或列表迭代器)将抛出 ConcurrentModificationException 来响应 next、remove、previous、set 或 add 操作。在迭代期间面临并发修改时,它提供了快速失败 行为,而不是非确定性行为。
 子类是否使用此字段是可选的。如果子类希望提供快速失败迭代器(和列表迭代器),则它只需在其 add(int, Object) 和 remove(int) 方法(以及它所重写的、导致列表结构上修改的任何其他方法)中增加此字段。对 add(int, Object) 或 remove(int) 的单个调用向此字段添加的数量不得超过 1,否则迭代器(和列表迭代器)将抛出虚假的ConcurrentModificationExceptions。如果某个实现不希望提供快速失败迭代器,则可以忽略此字段。

构造方法:
ArrayList()  构造一个初始容量为10的空列表.
ArrayList(Collection c)  构造一个包含指定collection的元素的列表.
ArrayList(int initialCapacity) 构造一个具有初始容量的空列表.

方法:(其中从AbstractList中继承的方法,重复的就不再写了)
Object clone()   返回此ArrayList实例的复制.
void  ensureCapacity(int minCapacity) 增加ArrayList实例的容量.
protected void removeRange(int findex,int tindex) 移除列表中索引在findex和tindex间          的所有元素.
void  trimToSize()  将此ArrayList实例的容量调整为列表的当前大小.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值