本帖最后由 雪龙 于 2013-9-15 12:13 编辑
我很赞同楼上的意见 ,在里再做一点补充,希望能更好的解决楼主的问题
ArrayList:底层的数据结构使用的是数组结构,查询元素的可以直接根据角标去找对应的元素,并且数组在存储的时候往往是存储在一块区域,因而会查询速度快;而增加和删除元素的时候,一般需要先找到增加和删除元素的位置,如果增加的话,这个元素之后的所有元素的角标都要加1,如果删除的话,这个元素之后的所有元素的角标减1.举两个极端的例子如果都在第一个元素的位置增加和删除,可以想象会有多大的开销。
LinkedList:底层使用的是链表数据结构,并且这些数据在存储的时候不是连续的内存空间,而是由一根线将这些元素连接起来,可以这样想,在每个元素之后存储的是下一个元素的地址,和上一个元素的地址,这样在查询的时候,要重头开始遍历元素,由上一个元素找下一个元素,直到找到为止,因而速度较慢;而增加元素的时候,只需要断开需要插入元素位置附近两个元素之间的连线,也就是改变前后两个元素的对于要删除或插入元素的地址即可,因而会使得增删速度较快。
|
|