黑马程序员技术交流社区
标题:
关于ArrayList和LinkedList的一个问题
[打印本页]
作者:
匡文
时间:
2013-10-25 18:04
标题:
关于ArrayList和LinkedList的一个问题
本帖最后由 匡文 于 2013-10-26 14:51 编辑
老师说ArrayList的特点是查询快,删除、插入慢,LinkedList则相反,查询慢,删除、插入快。那为什么没有能够结合两者优势的类?查询快,删除、插入也快,有这样的类吗?如果没有是为什么没法实现?
作者:
寻丶丶觅
时间:
2013-10-25 18:20
我是一个初学者,相信楼主也是吧,我觉得我们现在就是做到如何去使用java中给出的规则,而不是去想这些深奥的,或者累积到足够的经验,可以去考虑下,但我想不是那么容易的,你能想到,java开发者也能想到。现在想的太深,只会让你学习的更加吃力。个人的一点建议
作者:
1961993790
时间:
2013-10-25 18:45
以下是对ArrayList和LinkedList的一些总结:
ArrayList 是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,
都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢
LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,
但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!
之后你会学到哈希函数,这种查找元素的速度更快,其实内部实现机制是一些算法;
当然技术都有利弊,不能十全十美。希望楼主对您有所帮助!
作者:
枫儿
时间:
2013-10-25 19:09
哟 哥们今天也刚看到这
作者:
HM代景康
时间:
2013-10-25 19:09
ArrayList和LinkedList在性能上各 有优缺点,都有各自所适用的地方,总的说来可以描述如下: 1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是 统一的,分配一个内部Entry对象。 2.在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。 3.LinkedList不 支持高效的随机元素访问。 4.ArrayList的空 间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间 可以这样说:当操作是在一列 数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中 间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
作者:
Yuan先生
时间:
2013-10-25 23:25
Java中集合要么是数组实现要么是链表实现,数组实现就是连续的内存空间,添加或删除数据的时候整体都要变动,所以数字组实现的ArrayList查询快增删慢,
链表实现,在内存中不是连续的内存空间,添加或删除数据的时候,只需要改动前后的两个数据二查询的时候要从第一个开始查询,所以链表实现LinkedList查询慢,增删快
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2