问题阐述
ArrayList 和 LinkedList 是两个常用的 List 接口实现类,请问它们有何区别?
解答
ArrayLIst 类相当于数据结构中的线性表,它在底层使用数组来存储元素,因此适合快速获得指定位置的元素。但是,在删除元素时,例如删除第一个元素,则后面的元素必须全部向前移动一位,显然开销很大。向第一个位置增加元素时,效果类似。
LinkedList 类相当于数据结构中的链表。它在底层使用对象来保存元素,因此适合元素的增加和删除。但是,要获得指定位置的元素时,需要从头开始遍历,显然开销很大。
在实际编程中,通常采用面向接口的编程方法,示例代码如下:
List<Integer> list = new ArrayList<Integer>();
此时如果需要从列表中删除元素,可以将实现类换成LinkedList,代码如下:
list = new LinkedList<Integer>();