ArrayList 和 LinkedList

1.随机访问的时间差

ArrayList 实现了RandomAccess接口(标示性接口,没有任何东西)
LinkedList 并没有实现,所以访问时需要使用迭代器,不能随机访问。

alt

2.增删的快慢

ArrayList在尾部插入和删除性能可以,但是其他部分插入删除会比较慢。
LinkeList 头尾删除性能高。中间部分性能很低,可能不如ArrayList。

alt 所以平均性能还是ArrayList更快,因为LinkedList需要先定位,这个过程很慢,定位之后增删要的时间很短。

局部性原理

ArrayList 可以充分利用Cpu缓存,局部性原理。CPU缓存在读取内存到缓存时,会认为相邻的元素也可能被访问,会一起读取到cpu缓存中。所以ArrayList元素地址是相邻的,但是LinkedList却不是。所以ArrayList的遍历访问会比LinkedList更快。

内存

LinkedList 内存占用更多,因为需要额外保存前驱和后继指针。
在1000个Integer下

alt 可以看出LinkedList大小比ArrayList更大。

结论

alt

全部评论

相关推荐

仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-25 19:15
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务