- LinkedList中的迭代器中的remove()和previous方法不太懂
- Linkedlist中的addAll()方法为什么要先将集合转换为数组
ArrayList 和 LinkedList比较
-
ArrayList
- 基于数组,在数组中搜索和读取数据是很快的。因此 ArrayList 获取数据的时间复杂度是O(1);
- 但是添加、删除时该元素后面的所有元素都要移动,所以添加/删除数据效率不高;
- 另外其实还是有容量的,每次达到阈值需要扩容,这个操作比较影响效率。
-
LinkedList
-
基于双端链表,添加/删除元素只会影响周围的两个节点,开销很低;
-
只能顺序遍历,无法按照索引获得元素,因此查询效率不高;
-
没有固定容量,不需要扩容;
-
需要更多的内存,如文章开头图片所示 LinkedList 每个节点中需要多存储前后节点的信息,占用空间更多些。