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

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

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