List常见面试问题

List的特点有哪些?

Java中的List是一种存放有序的、可以重复的数据的集合,它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置,因此可以通过这个序列号来访问元素。

Java中集合有哪些?

Java中的List有三种实现方式:ArrayList、LinkedList和Vector。其中,ArrayList是基于数组实现的,LinkedList是基于链表实现的,Vector是基于数组实现的线程安全版本。

​​

ArrayList数据结构是什么?

ArrayList是基于数组实现的,其中elementData数据存储数据元素,size代表集合大小

java 复制代码
 /**
 * The array buffer into which the elements of the ArrayList are stored.
 * The capacity of the ArrayList is the length of this array buffer. Any
 * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
 * will be expanded to DEFAULT_CAPACITY when the first element is added.
 */
transient Object[] elementData; // non-private to simplify nested class access
/**
 * The size of the ArrayList (the number of elements it contains).
 *
 * @serial
 */
private int size;

ArrayList如何进行扩容?

ArrayList的扩容方法是grow(),它会获取到ArrayList中elementData数组的内存空间长度,然后扩容至原来的1.5倍。最后调用Arrays.copyOf方法将elementData数组指向新的内存空间时newCapacity的连续空间。

ArrayList是线程安全的吗?

ArrayList不是线程安全的。

有哪些线程安全的List?

线程安全的List有Vetor,​​CopyOnWriteArrayList

CopyOnWriteList使用情景?

  • 适用于数据量不大的场景,不适用于数据量大的场景。由于写操作的时候,需要拷贝数组,会消耗内存,如果原数组的内容比较多的情况下,可能导致young gc或者full gc
  • 适用于读多写少的场景,不适用于实时读的场景。

相关推荐
数智启示录6 小时前
Flink CDC 机制精讲(二):Checkpoint Barrier 如何形成一致快照 【面试宝典】
大数据·经验分享·面试·flink
船厂电气自动化ai大模型8 小时前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习
wuyk5559 小时前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
Brilliantwxx10 小时前
【算法从零到千】【59-65】链表专题
数据结构·链表
重生之后端学习10 小时前
53. 最大子数组和[中等]✅
java·数据结构·算法·leetcode·职场和发展
笨笨饿11 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
小手cool13 小时前
使用递归对数组进行反转操作
java·数据结构·算法
码行山野赴时序归途13 小时前
从暴力到最优:三道 C 语言入门题的解法思路
c语言·开发语言·数据结构·算法·leetcode·排序算法
CarIise15 小时前
C语言结构体与链表
数据结构·算法
charlie11451419117 小时前
deque、list 与 forward_list:vector 之外的三个选择
开发语言·数据结构·c++·list·开源项目