【2025 JAVA面试题】 常见几个具体问题
数组(Array)
优点:
- 随机访问:数组支持快速的随机访问,即可以通过索引直接访问数组中的元素,时间复杂度为O(1)。
- 连续内存:数组在内存中是连续存储的,这使得它们在访问时具有较高的缓存命中率。
- 固定大小:一旦创建,数组的大小是固定的,这有助于在某些情况下提高性能,因为不需要进行动态大小的调整。
缺点:
- 大小固定:数组的大小在创建后不能改变,如果要增加或减少元素数量,通常需要创建一个新的数组并复制现有元素。
- 插入和删除效率低:在数组的中间插入或删除元素需要移动大量的元素,时间复杂度为O(n)。
- 内存浪费:在某些情况下,如果数组的实际使用量远小于其最大容量,会造成内存浪费。
链表(LinkedList)
优点:
- 动态大小:链表的大小可以动态变化,可以在运行时添加或删除元素而不需要移动其他元素。
- 插入和删除效率高:在链表的头部或尾部插入或删除元素非常快,时间复杂度为O(1)。在中间插入或删除元素虽然需要遍历到该位置,但只需更改指针,时间复杂度接近O(n)。
- 内存使用灵活:链表不需要连续的内存空间
