1 Vamposine 2018-12-26 21:00:07 +08:00 via iPhone ![]() 这不是基础么,指定位置必须是 arraylist 效率高 |
2 feiyuanqiu 2018-12-26 21:01:58 +08:00 contains ?复杂度是一样的。它们的差异在 java.util.List#get 和 java.util.List#add(int, E) |
![]() | 3 insomnia1232 2018-12-26 21:04:05 +08:00 遍历查找的话 没啥区别 |
![]() | 4 V2exUser 2018-12-26 21:05:49 +08:00 via Android ![]() 查找的话,底层是数组的效率高,因为内存区是连续的。 |
5 exonuclease 2018-12-26 21:29:08 +08:00 都是 O(n)吧 如果不是排好序的 |
![]() | 6 jmc891205 2018-12-26 21:32:11 +08:00 无序的话是同样的时间复杂度 有序的话是 ArrayList 好 |
![]() | 7 kiddult 2018-12-26 21:53:00 +08:00 不管什么情况都是 ArrayList,ArrayList 占内存连续便宜,CPU 缓存比较吃香 |
8 mrsatangel 2018-12-26 21:57:54 +08:00 ArrayList 的 cache locality 更好 |
9 rockss OP 补充一下,是查找指定的元素(不是通过下标) 所以看起来 ArrayList 还是有一定的优势的(不过在时间复杂度分析上,应该没多大区别了) |
10 zhix 2018-12-27 16:04:23 +08:00 因为 Cache Line 的存在,所以严格来说 ArrayList 的遍历速度更快一些。 |