Arraylist与Linkedlist
众所周知,Arraylist和Linklist的区别在于:
-
Arraylist 增删慢,查询快。
-
Linkedlist 增删快,查询慢。
但如果将Arraylist与Linkedlist进行相比较的话,这俩句话是完全正确的吗?
让我们从最开始的查询讲起。
首先是Arraylist:
- 根据index查询的时间复杂度无疑是O(1)
- 根据元素进行查找的速度为O(n) (也就是遍历)
Linkedlist
- 根据index查询的时间复杂度为O(n)
注意:Linkedlist根据元素进行查找的时候不能使用for循环
(这里的n是2分之n,因为采用了2分查找,但时间复杂度只有n)
- 根据元素进行查找的速度为O(n) (也就是遍历)
注意:Linkedlist根据元素进行查找的时候不能使用for循环,
需要使用迭代器或使用增强for(本质仍然是迭代器)
原因:
for (int i = 0;i<linkedList.size();i++)