首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在List<T>类型的对象中,按索引访问对象是遍历列表中的每一项,还是使用更快的方法?

在List<T>类型的对象中,按索引访问对象是遍历列表中的每一项,还是使用更快的方法?
EN

Stack Overflow用户
提问于 2010-09-08 18:24:24
回答 4查看 185关注 0票数 1

例如:

代码语言:javascript
复制
List<MyClass> myList = new List<MyClass>();
...
// add lots of members...
...
MyClass myClass = myList[25];

请求索引25会比请求索引1花费更长的时间吗?还是使用一些快速算法直接跳到第25项?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-08 18:27:59

在内部,List实现为数组(在添加新项时会增长),因此对第n个元素的访问将是O(1)操作。(因此,获取myList[1]和获取myList[25]的速度没有差别。)

摘自List.Item property文档:

检索该属性的值是一个O(1)操作;设置该属性也是一个O(1)操作。

我可以想象,如果List<T>在获得第n个项目之前必须跳过所有项目,那么.NET应用程序将会有多慢。

票数 2
EN

Stack Overflow用户

发布于 2010-09-08 18:28:26

List<T>Item属性

检索此属性的值是O(1)操作;设置属性也是O(1)操作。

票数 2
EN

Stack Overflow用户

发布于 2010-09-08 18:26:25

不,另一方面,删除和插入依赖于删除元素的位置,因为它是一个动态数组

http://en.wikipedia.org/wiki/Dynamic_array

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3666731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档