A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 匡文 中级黑马   /  2013-10-25 18:04  /  1440 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 匡文 于 2013-10-26 14:51 编辑

老师说ArrayList的特点是查询快,删除、插入慢,LinkedList则相反,查询慢,删除、插入快。那为什么没有能够结合两者优势的类?查询快,删除、插入也快,有这样的类吗?如果没有是为什么没法实现?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
我是一个初学者,相信楼主也是吧,我觉得我们现在就是做到如何去使用java中给出的规则,而不是去想这些深奥的,或者累积到足够的经验,可以去考虑下,但我想不是那么容易的,你能想到,java开发者也能想到。现在想的太深,只会让你学习的更加吃力。个人的一点建议
回复 使用道具 举报
以下是对ArrayList和LinkedList的一些总结:
ArrayList 是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,
都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢

LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,
但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!

之后你会学到哈希函数,这种查找元素的速度更快,其实内部实现机制是一些算法;
当然技术都有利弊,不能十全十美。希望楼主对您有所帮助!

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
哟  哥们今天也刚看到这
回复 使用道具 举报
ArrayList和LinkedList在性能上各 有优缺点,都有各自所适用的地方,总的说来可以描述如下:  1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是 统一的,分配一个内部Entry对象。    2.在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。     3.LinkedList不 支持高效的随机元素访问。    4.ArrayList的空 间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间     可以这样说:当操作是在一列 数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中 间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
Java中集合要么是数组实现要么是链表实现,数组实现就是连续的内存空间,添加或删除数据的时候整体都要变动,所以数字组实现的ArrayList查询快增删慢,
链表实现,在内存中不是连续的内存空间,添加或删除数据的时候,只需要改动前后的两个数据二查询的时候要从第一个开始查询,所以链表实现LinkedList查询慢,增删快

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马