黑马程序员技术交流社区

标题: 关于list集合特点,不是很明白 [打印本页]

作者: 王帅---    时间: 2015-12-6 15:13
标题: 关于list集合特点,不是很明白
本帖最后由 王帅--- 于 2015-12-6 15:31 编辑

list特点:元素是有序的,元素可以重复。因为该集合体系有索引。
list子类:
*1、ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但增删稍慢。线程不同步。
*2、LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。
我不明白里面的索引是什么意思。如果是ArrayList的话,是不是它的数组结构也就是角标有关系?
那链表结构的LinkedList它的索引是什么样的?
作者: 洋葱头头    时间: 2015-12-6 16:47
索引不就是角标?
作者: 小小笑笑    时间: 2015-12-6 17:08
ArrayList顾名思义,底层采用的是数组,由数组结构组成的list集合,而数组就有索引(即角标)这个属性,有序,所以查询快,增删反而慢一点,因为删除一个,后面的顺序都变了。
LinkedList采用链表结构,前一个与后一个是成链性关系的。例如A的地址为001122 ,B的地址为223344,C为445566,其中相同的22,44可以理解为链接的标示,这就是链性的。查询的话要慢一点,查完A,根据标示22,查B,然后根据标示44查C,要一个一个去查;而删除的话,例如删除B,那么会更改C为225566,只需要更改标示即可,后面的数据,前面的数据都不影响,所以快很多。
不过就目前开发中所言,ArrayList用的较多,LinkedList很少用到。

作者: bbaijiajinger    时间: 2015-12-6 22:26
ArrayList 底层结构是数组通过新建数组复制进行扩容。如果要删除元素和添加元素哪吗其后的元素都要后移或前移
LinkedList地层结构是链表链表添加元素或删除元素只要把后边的地址给要添加的元素,添加的元素的地址给其前一个元素
作者: 迷茫不堪的年纪    时间: 2015-12-6 23:06
底层 一个 数组 , 一个链表,,  还有list 的特点还有可增减
作者: 洋葱头头    时间: 2015-12-7 11:44
索引在链表里 你就把他当成地址把  没想的这么复杂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2