ArrayList 和 LinkedList
1.随机访问的时间差
ArrayList 实现了RandomAccess接口(标示性接口,没有任何东西)
LinkedList 并没有实现,所以访问时需要使用迭代器,不能随机访问。
2.增删的快慢
ArrayList在尾部插入和删除性能可以,但是其他部分插入删除会比较慢。
LinkeList 头尾删除性能高。中间部分性能很低,可能不如ArrayList。
所以平均性能还是ArrayList更快,因为LinkedList需要先定位,这个过程很慢,定位之后增删要的时间很短。
局部性原理
ArrayList 可以充分利用Cpu缓存,局部性原理。CPU缓存在读取内存到缓存时,会认为相邻的元素也可能被访问,会一起读取到cpu缓存中。所以ArrayList元素地址是相邻的,但是LinkedList却不是。所以ArrayList的遍历访问会比LinkedList更快。
内存
LinkedList 内存占用更多,因为需要额外保存前驱和后继指针。
在1000个Integer下
可以看出LinkedList大小比ArrayList更大。