前言
昨天在面试一家公司的时候,面试官问我ArrayList和LinkedList的遍历方式有哪些。当时我是这么回答的“用Iterator、ListIterator迭代器来遍历。如果是ArrayList的话,还可以用普通for循环、foreach等方式,因为ArrayList可以通过下标(get(int index))来访问,而LinkedList是双向链表,无法通过下标来访问,所以LinkedList的遍历只能通过迭代器的方式。”显然,面试官对我的回答不太满意,问我:“还有别的吗” ?我说没有 (尴尬,又一次没能成功接收面试官的引导信息)...
事后补充
- LinkedList也是有get(int index)方法的!!!也能通过下标访问!!!但是,它和ArrayList有区别!!!ArrayList的get方法的时间复杂度是O(1) , 能通过下标直接定位到数据。而LinkedList在get任何一个位置的数据的时候,都会把前面的数据走一遍。参考
- Java LinkedList遍历的7种方法
- 普通for循环
- foreach循环
- 迭代器iterator遍历
- 用pollFirst()遍历
- 用pollLast()遍历
- 用removeFirst()遍历
- 用removeLast()遍历
- 综上,LinkedList也有get(int index)方法!!!能够通过下标来访问元素,但它不是直接定位到元素,而是从链表头逐个找下去!!! (我以前认为它是没有get(int index)方法的!!!这是一个误区!!!)