Michael_xpd 发表于 2013-9-15 10:08
对于处理一列数据项, Java 提供了两个类 ArrayList 和 LinkedList , ArrayList 的内部实现是基于内 ...
陈国柱 发表于 2013-9-15 11:52
ArrayList:底层的数据结构使用的是数据结构,查询的时候不用判断元素,只需要通过每个元素的角标就可以了, ...
ArrayList:底层的数据结构使用的是数组结构,查询元素的可以直接根据角标去找对应的元素,并且数组在存储的时候往往是存储在一块区域,因而会查询速度快;而增加和删除元素的时候,一般需要先找到增加和删除元素的位置,如果增加的话,这个元素之后的所有元素的角标都要加1,如果删除的话,这个元素之后的所有元素的角标减1.举两个极端的例子如果都在第一个元素的位置增加和删除,可以想象会有多大的开销。 LinkedList:底层使用的是链表数据结构,并且这些数据在存储的时候不是连续的内存空间,而是由一根线将这些元素连接起来,可以这样想,在每个元素之后存储的是下一个元素的地址,和上一个元素的地址,这样在查询的时候,要重头开始遍历元素,由上一个元素找下一个元素,直到找到为止,因而速度较慢;而增加元素的时候,只需要断开需要插入元素位置附近两个元素之间的连线,也就是改变前后两个元素的对于要删除或插入元素的地址即可,因而会使得增删速度较快。 |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |