深入理解ArrayList

什么是ArrayList?

ArrayList的实现原理其实就是数组(动态数组)


动态数组与一般数组有什么区别?

与Java中的数组相比,ArrayList的容量能动态地增长


ArrayList效率怎么样?

ArrayList不是线程安全的,所以效率比较高 ,但是只能用于单线程的环境中,那多线程呢?别急,文末会讲到


ArrayList主要继承哪些类实现了哪些接口?

ArrayList主要继承了AbstractList类,实现了List、RandomAccess、Cloneable、Serializable接口


RandomAccess的意思是其拥有快速访问的能力,ArrayList可以以 O(1)[1]的时间复杂度去根据下标访问元素。由于ArrayList底层机构是数组,所以它占据了==一块连续的内存空间==,其长度就是数组的大小,因此它也有数组的缺点,在空间效率不高,但是也有它的有点,就是查询速度快,时间效率较快


ArrayList是线程安全的吗?

不,ArrayList不是线程安全的,而且ArrayList允许元素为null


ArrayList如何实现线程安全?

上上面说过ArrayList不是线程安全的,所以效率较高,但是只能适用于单线程,那么多线程怎么办呢?, 多线程可以使用*Collections.synchronizedList(List list) *函数返回一个线程安全的 ArrayList 集合,或者使用 concurrent 并发包下的CopyOnWriteArrayList


网友评论

6条评论

发表

网友评论

6条评论

发表

最新评论

12月01日 10:25

12月01日 00:30

11月30日 23:46

11月30日 22:46

11月30日 22:28

11月30日 22:25

推荐文章

彩龙

Copyright © 2008-2020 彩龙社区(https://www.clzg.cn) 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP