ArrayList详细描述

来源:互联网 发布:有问必答的语音软件 编辑:程序博客网 时间:2024/05/21 16:57

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。

ArrayList:线程不安全,查询速度快,底层数据结构是数组结构,扩容增量是原容量的 0.5倍+1,如 ArrayList的容量为10,一次扩容后是容量为16。

Vector:线程安全,但速度慢,底层数据结构是数组结构,加载因子为1,即当 元素个数 超过 容量长度 时,进行扩容,扩容增量是原容量的1倍,如 Vector的容量为10,一次扩容后是容量为20。

0 0
原创粉丝点击