LinkedList和ArryayList
ArrayList 和 LinkedList 是 Java 中常用的集合类,用于存储一组元素。它们分别基于动态数组和双向链表实现,具有不同的特点和适用场景。
在 ArrayList 中,add 函数用于在列表的末尾添加元素,remove 函数用于删除指定位置的元素。
在 LinkedList 中,add 函数可以根据需要在列表的任意位置添加元素,remove 函数用于删除指定位置的元素,removeLast 函数用于删除链表的最后一个元素。
ArrayList 是基于数组实现的动态数组。它的特点包括:
- 随机访问:
由于底层是数组,所以 ArrayList 支持通过索引快速访问元素,时间复杂度为 O(1)。
- 尾部操作效率高:
在列表的末尾进行插入和删除操作效率较高,时间复杂度为 O(1)。
- 内存空间连续:
所有的元素在内存中是连续存储的,这样可以利用 CPU 缓存,提高访问速度。
LinkedList 是基于双向链表实现的。它的特点包括:
- 插入和删除效率高:
在任意位置进行插入和删除操作的效率较高,时间复杂度为 O(1)。
- 不支持随机访问:
由于是链表结构,不支持通过索引直接访问元素,只能通过遍历或者迭代器来访问。
- 内存空间不连续:
每个元素在内存中是通过指针相连的,不连续存储,因此对 CPU 缓存的利用率较低。
选择使用哪种集合
1.如果需要频繁地进行随机访问,应该使用 ArrayList。
2.如果需要频繁地进行插入和删除操作,尤其是在列表的中间位置,应该使用 LinkedList。