arraylist底层 arraylist底层源码
您好,今天小乐来为大家解答以上的问题。arraylist底层相信很多小伙伴还不知道,现在让我们一起来看看吧!
arraylist底层 arraylist底层源码
arraylist底层 arraylist底层源码
arraylist底层 arraylist底层源码
1、Q:ArrayList底层实现是什么?A:底层实现是数组,ArrayList内部定义了一个数组来存储对象Q:ArrayList默认的容量是多少?new ArrayList<>()时,指定容量与不指定容量有什么区别?A:默认容量是10。
2、调用默认构造函数时,只是把一个size为0的空数组赋值给elementData,当次添加元素时,数组会扩容到DEFAULT_CAPACITY(10)指定容量初始化ArrayList时,会创建一个大小为initialCapacity的数组赋值给elementData,在添加个元素时,如果initialCapacity小于DEFAULT_CAPACITY,数组将会扩容到DEFAULT_CAPACITYQ:ArrayList的扩容机制是什么?什么时候会进行扩容?A:分两种情况Q:1.7与1.8版本的区别A:1.7版本在初始化时就创建一个容量为10的数组;1.8版本在初始化时创建一个空数组,当次add元素时才扩容到10Q:ArrayList线程安全吗?A:不安全,如果需要线程安全,则使用Vector,CopyOrWriteArrayList,Collections.synchronizedList()Q:ArrayList在增删时的效率如何?A:看情况,尾插时,如果不扩容,效率高; 非尾插或者尾插需要扩容时,效率会变低,因为这两种情况都会涉及到数组的拷贝Q:ArrayList与LinkedList区别A:基本等同于数组与链接的区别,数组是固定大小,需要一片连续的内存空间,查找快,增删慢;链接不需要连续内存空间,在逻辑上是连续的,查找慢,增删快。
3、二都都是线程不安全的。
4、遍历性能ArrayList比LinkedList好,因为CPU内部的缓存结构会缓存连续的内存片断,可大幅降低读取内存的性能消耗。
5、Q:ArrayList适合做队列吗?A:不适合。
6、队列是FIFO,先进先出,使用数组做队列,需要头插尾出或者头出尾插,这都会涉及到数组的,很耗性能。
7、Q:ArrayList初始化时是否需要指定初始容量A:容量小于10不需要,大于10时指定容量较好。
本文到这结束,希望上面文章对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。