linkedlist 遍历应避免 get(i) 随机访问,因其单次为 o(n),整体退化为 o(n²);推荐使用迭代器或增强 for 循环,时间复杂度稳定为 o(n)。

LinkedList 的遍历不应使用随机访问(如 get(i)),因为每次调用都是 O(n) 时间复杂度,循环 n 次就会退化为 O(n²)。根本解决方法是避免下标访问,改用迭代器或增强 for 循环。
用增强 for 循环替代 for-i 遍历
增强 for 循环底层自动使用迭代器,对 LinkedList 是 O(n) 总体复杂度,效率稳定。
// ❌ 低效:O(n²) for (int i = 0; i
显式使用 Iterator 或 ListIterator
需要在遍历时删除元素或双向遍历时,应直接操作 Iterator,避免并发修改异常,也规避随机访问开销。
-
iterator()支持正向遍历和remove() -
listIterator()支持双向遍历、添加、替换 - 切勿在循环中混用
list.remove(i)或list.get(i)
真要按索引查?先评估数据结构是否合适
如果业务中频繁需要随机访问(如反复查第 5 个、第 100 个元素),LinkedList 本身就不适合——它专为高频率插入/删除设计,而非快速定位。
- 考虑换成
ArrayList(支持 O(1) 随机访问) - 若需兼顾插入删除与查找,可引入辅助结构(如 HashMap 存索引映射),但需权衡维护成本
- 纯遍历场景下,坚持用迭代方式,不妥协
不复杂但容易忽略:选对遍历方式,比优化单次操作更重要。LinkedList 的性能陷阱,90% 出现在误用 get(i) 上。










