标签:动态 数组 keyword 根据 百度云 tor 安全 array 网盘
momentor大佬曾神 一期二期(完整版课:点击我获取)
==============================================================
在百度一开始网盘基础面的时候,很多面试官可能会问List集合一些基础知识,比如:
ArrayList
默认教程大小是多少,是如何扩容的?ArrayList
和LinkedList
的底层数据结构是什么?ArrayList
和LinkedList
的区别?分别用在什么场景?ArrayList
查询快而增删慢?Arrays.asList
方法后的List可以扩容吗?modCount
在非线程安全集合中的作用?ArrayList
和LinkedList
的区别、优缺点以及应用场景
ArrayList
是由动态再分配的Object[]
数组作为底层结构,可设置null
值,是非线程安全的。
//默认的空的数组,在构造方法初始化一个空数组的时候使用
private static final Object[] EMPTY_ELEMENTDATA = {};
//使用默认size大小的空数组实例
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
//ArrayList底层存储数据就是通过数组的形式,ArrayList长度就是数组的长度。
transient Object[] elementData;
//arrayList的大小
private int size;
那么ArrayList
底层数据结构是什么呢?
很明显,使用动态再分配的Object[]
数组作为ArrayList
底层数据结构了,既然是使用数组实现的,那么数组特点就能说明为什么ArrayList查询快而增删慢?
因为数组是根据下标查询不需要比较,查询方式为:首地址+(元素长度*下标),基于这个位置读取相应的字节数就可以了,所以非常快;但是增删会带来元素的移动,增加数据会向后移动,删除数据会向前移动,导致其效率比较低。
最新曾神Zaoeyo 完整C4D高级影像风格图和方形动态影像设计课程百度云分享
标签:动态 数组 keyword 根据 百度云 tor 安全 array 网盘
原文地址:https://www.cnblogs.com/weiwei186/p/13171912.html