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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄玉昆   /  2013-2-20 22:58  /  4683 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张向辉 发表于 2013-2-21 21:47
如果知道了一个值,查询他在链表中的索引位的话,是比较麻烦的  等下我整理下思路 今天有点蒙  ...

按你这么一说,我想起来了,毕老师说链表查询的慢应该在于:通过数据查索引很慢,因为是链表,要从头一个一个问询,是不是存在要查的值,如果这个值是在最后,那么要遍历前面所有的数据,所以就慢了。但是是不是通过索引查数据,会不会就不一样了呢?有待研究啊。谢谢张版主啊,让我拨开了第一层迷雾。嘿嘿:D
回复 使用道具 举报
get方法的速度应该差不多,indexOf(Object o) 方法就差多了
数组的底层算法很多 比如二分查找等  链表的查找方法除了根据前置或后置地址连接查找,其他的还没研究过,不是很清楚。

评分

参与人数 1黑马币 +3 收起 理由
黄玉昆 + 3 版主果然给力,谢谢啊

查看全部评分

回复 使用道具 举报
本帖最后由 朱玉玺 于 2013-2-21 22:23 编辑

LinkedList是有索引的哦。就像老毕说的,每一种容器,它针对的都是特殊的存储方式,或者说数据结构。每一种数据结构都是对某一类问题解决比较有效,同时又有局限性。Collection选择那个子类,你可以这样来:
是否允许重复元素?
允许---List
                  如果查询频繁,则选择ArrayList;如果是增删操作频繁,则选择LinkedList。不同,增删频繁的情况很少见,一般都是查询频繁,所以在实在搞不清楚的时候,ArrayList是首先。
不允许--Set
   Set中的元素是否需要排序?不需要选择HashSet,需要就选择TreeSet。
实际开发中,我们可能要对这些容器进行再次封装,已使其与实际项目的关系更为紧密。
     

评分

参与人数 1黑马币 +3 收起 理由
黄玉昆 + 3 赞一个!

查看全部评分

回复 使用道具 举报
关于LinkedList索引的讨论起来越有点意思了,LinkedList是List体系中的成员,而且又能使用带索引的方法,所以它有索引这是肯定的,相对于数组结构的根据索引查找值的get(int index)方法来说,链表结构更像是查找到索引以后再取值,链表结构每次都要从前往后去核对每一个值是不是要找的值,直到找到为止,这种查找方式是由它的结构决定的,所以与它的索引没多大关系,需要明确的一点就是:有索引未必会按索引去查找,查找的方式取决于数据结构。

评分

参与人数 1黑马币 +3 收起 理由
黄玉昆 + 3 有些道理,赞一个!

查看全部评分

回复 使用道具 举报
朱玉玺 发表于 2013-2-21 22:19
LinkedList是有索引的哦。就像老毕说的,每一种容器,它针对的都是特殊的存储方式,或者说数据结构。每一种 ...

回得很好,不错,谢谢
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马