Java 中的 List 接口有两种常见的实现类:ArrayList 和 LinkedList。
ArrayList 内部使用数组来存储元素,当 ArrayList 容量不足时,会自动进行扩容。ArrayList 的扩容机制是在当前容量不足时,创建一个新的更大容量的数组,并将原数组中的元素复制到新数组中。默认情况下,每次进行扩容时,新数组的容量是原数组容量的 1.5 倍,即增长率是 50%。
LinkedList 是一个双向链表,每个节点包含了前一个节点和后一个节点的引用。当添加元素时,LinkedList 不需要进行扩容操作,因为它的存储结构是动态的,可以根据需要灵活地分配节点。
总结起来,ArrayList 通过扩容机制来实现动态增长,而 LinkedList 则通过动态分配节点来实现动态增长。