首页新闻找找看学习计划

数据结构中如何通过索引值获取索引内容(不用索引器)

0
悬赏园豆:30 [已解决问题] 解决于 2018-06-09 14:59

假设现在有一个size=10的集合,我们要获取index=5的元素,可以通过:

class Node

{

object item;

Node next;

}

...

for(var i = 0;i<5;i++)

{

     node = node.next;

}

node已经成了我们需要的内容。

但是如果size=10000,index=5000。也是通过这么一个循环去遍历吗?

或者说索引器实现的本质是什么呢?

大兄弟竹子的主页 大兄弟竹子 | 初学一级 | 园豆:104
提问于:2018-06-03 18:23
< >
分享
最佳答案
1

你的这种写法是链表的,,链表查询慢就是这个原因,你可以用数组和集合(用数组实现),直接根据索引获取,查询快

收获园豆:30
小光 | 小虾三级 |园豆:1830 | 2018-06-08 09:47

是的,单向链表。你这里说是集合是指arraylist吧,本质就是操作数组。那么问题来了,数组索引是怎么创造出来的呢

大兄弟竹子 | 园豆:104 (初学一级) | 2018-06-08 10:51

@大兄弟竹子: 数组下标和数组元素在堆中内存分配一样都是连续的,可以根据下标去内存中取值,jvm具体规则不熟悉,你可以参考https://www.zhihu.com/question/266170412/answer/309767360

小光 | 园豆:1830 (小虾三级) | 2018-06-08 12:08

@小光: 明白了,跟我想的差不多。可以这样理解吗:索引其实是数组独有的特性,因为其连续分配的内存与寻址管理,所以查询速度极快。而集合,ArrayList跟List<TResult>的基础均是数组。 

大兄弟竹子 | 园豆:104 (初学一级) | 2018-06-09 14:59

@大兄弟竹子: 嗯,对喽

小光 | 园豆:1830 (小虾三级) | 2018-06-09 15:07

@小光: 谢谢,最近刚回过头来看数据结构跟算法。

大兄弟竹子 | 园豆:104 (初学一级) | 2018-06-09 15:09

@大兄弟竹子: 巧了,我正在看数据结构和算法的电子书,有兴趣你也可以看看,下载免费的http://bestcbooks.com/categories/java/

小光 | 园豆:1830 (小虾三级) | 2018-06-09 15:13

@小光: 哈哈,好的。618买了一堆书。

大兄弟竹子 | 园豆:104 (初学一级) | 2018-06-09 15:18
其他回答(3)
0

安心去遍历把.

吴瑞祥 | 园豆:28729 (高人七级) | 2018-06-03 19:21
0

1、可以使用数组保存Node。

2、可以另外使用一个数组,实现index到具体Node的一个映射

母翟龙 | 园豆:204 (菜鸟二级) | 2018-06-03 23:19
0

“数据结构中如何通过索引值获取索引内容”

===》》》

索引器就是干这个的。

你不想用,那就自己写个方法喽。

===》》》

“或者说索引器实现的本质是什么呢?”

索引器的本质就是一个(或者)两个方法,也可以说索引器就是一个带参数(索引)的属性。

用于:通过指定的索引来从集合中获取特定元素。

 

 

西漠以西 | 园豆:1670 (小虾三级) | 2018-06-04 09:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册