Java 中 ArrayList 和 LinkedList 查找指定元素,哪个效率高?

2018-12-26 20:50:52 +08:00
 rockss
4428 次点击
所在节点    程序员
10 条回复
Vamposine
2018-12-26 21:00:07 +08:00
这不是基础么,指定位置必须是 arraylist 效率高
feiyuanqiu
2018-12-26 21:01:58 +08:00
contains ?复杂度是一样的。它们的差异在 java.util.List#get 和 java.util.List#add(int, E)
insomnia1232
2018-12-26 21:04:05 +08:00
遍历查找的话 没啥区别
V2exUser
2018-12-26 21:05:49 +08:00
查找的话,底层是数组的效率高,因为内存区是连续的。
exonuclease
2018-12-26 21:29:08 +08:00
都是 O(n)吧 如果不是排好序的
jmc891205
2018-12-26 21:32:11 +08:00
无序的话是同样的时间复杂度
有序的话是 ArrayList 好
kiddult
2018-12-26 21:53:00 +08:00
不管什么情况都是 ArrayList,ArrayList 占内存连续便宜,CPU 缓存比较吃香
mrsatangel
2018-12-26 21:57:54 +08:00
ArrayList 的 cache locality 更好
rockss
2018-12-27 13:02:07 +08:00
补充一下,是查找指定的元素(不是通过下标)

所以看起来 ArrayList 还是有一定的优势的(不过在时间复杂度分析上,应该没多大区别了)
zhix
2018-12-27 16:04:23 +08:00
因为 Cache Line 的存在,所以严格来说 ArrayList 的遍历速度更快一些。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/521306

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX