ArrayList

 我来答
子静子的人3925
2022-07-07 · TA获得超过7545个赞
知道小有建树答主
回答量:789
采纳率:0%
帮助的人:83.2万
展开全部
Q:ArrayList底层实现是什么?
A:底层实现是数组,ArrayList内部定义了一个数组来存储对象

Q:ArrayList默认的容量是多少?new ArrayList<>()时,指定容量与不指定容量有什么区别?
A:默认容量是10。调用默认构造函数时,只是把一个size为0的空数组赋值给elementData,当第一次添加元素时,数组会扩容到DEFAULT_CAPACITY(10)

指定容量初始化ArrayList时,会创建一个大小为initialCapacity的数组赋值给elementData,在添加第一个元素时,如果initialCapacity小于DEFAULT_CAPACITY,数组将会扩容到DEFAULT_CAPACITY

Q:ArrayList的扩容机制是什么?什么时候会进行扩容?
A:分两种情况

Q:1.7与1.8版本的区别
A:1.7版本在初始化时就创建一个容量为10的数组;1.8版本在初始化时创建一个空数组,当第一次add元素时才扩容到10

Q:ArrayList线程安全吗?
A:不安全,如果需要线程安全,则使用Vector,CopyOrWriteArrayList,Collections.synchronizedList()

Q:ArrayList在增删时的效率如何?
A:看情况,尾插时,如果不扩容,效率高; 非尾插或者尾插需要扩容时,效率会变低,因为这两种情况都会涉及到数组的拷贝

Q:ArrayList与LinkedList区别
A:基本等同于数组与链接的区别,数组是固定大小,需要一片连续的内存空间,查找快,增删慢;链接不需要连续内存空间,在逻辑上是连续的,查找慢,增删快。二都都是线程不安全的。
遍历性能ArrayList比LinkedList好,因为CPU内部的缓存结构会缓存连续的内存片断,可大幅降低读取内存的性能消耗。

Q:ArrayList适合做队列吗?
A:不适合。队列是FIFO,先进先出,使用数组做队列,需要头插尾出或者头出尾插,这都会涉及到数组的复制,很耗性能。

Q:ArrayList初始化时是否需要指定初始容量
A:容量小于10不需要,大于10时指定容量较好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式