【C#食谱】【面食】菜单4:List
一个LinkedList<T>对象其实就是一系列LinkedListNode<T>对象的集合。每一个LinkedListNode<T>对象都可以访问下一个和前一个LinkedListNode<T>对象,其值是通过value属性访问的。
现在,开始我们的性能比较:List<T>类的性能优于LinkedList<T>类。
增加 删除
在List<T>中增加、删除节点的速度,大体上快于使用LinkedList<T>时的相同操作。将 List<T>.Add方法和LinkedList<T>的Add*方法相比较,真正的性能差别不在于Add操作,而在LinkedList<T>在给GC(垃圾回收机制)的压力上。一个List<T>本质上是将其数据保存在一个堆栈的数组上,而LinkedList<T>是将其所有节点保存在堆栈上(人家是一个,我是一系列)。这就使得GC需要更多地管理堆栈上LinkedList<T>的节点对象。注意,List<T>.Insert*方法比在LinkedList<T>中使用Add*方法在任何地方添加一个节点可能要慢。然而,这个依赖于List<T>插入对象的位置。Insert方法必须使所有在插入点后面的元素往后移动一位。如果新元素被插在List<T>最后或接近最后的位置,那么相对于GC维护LinkedList<T>节点的总的开销来说,其开销是可以被忽略的。
索引
另一个List<T>性能优于LinkedList<T>的地方是你在使用索引进行访问的时候。在List<T>中,你可以使用索引值(indexer)直接定位到某个具体的元素位置。而在LinkedList<T>中,却没有这样的奢侈品。在LinkedList<T>中,你必须通过Previous或Next属性遍历整个List,直到找到你想要的节点。
搜索 查找
在搜索某个元素或节点的时候,List<T>的性能也优于LinkedList<T>。相比于LinkedList<T>的Contains,Find,和FindLast方法,List<T>.BinarySearch方法在找元素方面更快。这次因为LinkedList<T>使用的是线性查找,而List<T>使用的是Binary Search。简单地说,Binary Search利用List<T>中的元素已排过序,这需要在调用BinarySearch方法之前先调用Sort方法(请注意,如果有任何新的元素被添加进来,那么Sort方法必须被重新调用)。接下去的查找就是Binary Search的算法了,我就不再赘述了!
转载于:https://www.cnblogs.com/adaiye/archive/2008/02/22/List_and_LinkedList.html
【C#食谱】【面食】菜单4:List相关推荐
- 学校食堂简易点餐管理系统(含用户登录且密码隐藏)C++
系统运行步骤陈述: 运行程序进入用户登陆界面,输入账户及密码 如果账户以及密码输入正确则进入系统,显示登陆成功 紧接着以下须按照指示输入,所输入字母不区分大小写 进入系统后便可看见菜单选项,a,b,c ...
- 如何制作营养膳食计算器_如何通过构建自动膳食计划器节省时间和金钱
如何制作营养膳食计算器 使用Google Calendar和Google Sheets API在正确的日子选择正确的食谱. (Use the Google Calendar and Google Sh ...
- 盘点那些你没怎么见过的手机软件,必不可少APP!
手机安装了不少APP吧?有些APP不经常用的话,它可以光荣下岗了,接下来为你们分享几款神仙级的APP,是否好用自己去试试就知道啦! 纸条作文 这款软件主要是分享给,还在为些作文想破脑袋的学生党,如果你 ...
- 《人机交互与戏剧表演:用戏剧理论构建良好用户体验》一1.2 抛开包袱
本节书摘来自华章出版社<人机交互与戏剧表演:用戏剧理论构建良好用户体验>一书中的第1章,第1.2节,作者 (美)Brenda Laurel,更多章节内容可以访问云栖社区"华章计算 ...
- 【C#食谱】【面食】菜单7:用默认值初始化泛型变量
问题:ee6d64b9 你有一个泛型类包含一个由类自身定义类型参数的变量.由于对泛型对象的约束,你希望这个变量被初始化为其默认值. 解决方法: 非常简单的方法:只要使用default关键字初始化其值为 ...
- APPENDIX B-菜单计划和食谱-Pagano博士的七天菜单计划样例-未完待续
本篇翻译书中的APPENDIX B 也就是著名的Pagano饮食 日期 早餐 午餐 晚餐 第1天 •炖无花果 •燕麦肉桂热蛋糕** •热柠檬水.花草茶或不含咖啡因的黑咖啡 •豆腐菠菜汤* •查尔顿金枪 ...
- 食谱菜单系统(通用版).exe
使用<食谱菜单系统>可直观地进行点餐并统计菜单数据,为食谱制定提供参考和辅助.主要具有菜单选择功能.数据统计功能和食谱编辑功能. 1.菜单选择功能:单击菜单标签即可进行选择,再次单击则可取 ...
- 【C#食谱】【杭帮菜】菜单2:写一个TCP客户端
问题: 你想连接基于TCP的服务端. 解决方法: 使用System.Net.TcpClient类,通过给服务端传递地址和端口来和服务端建立连接和会话.下面这个例子将和上一菜单中的服务端进行会话. cl ...
- 1周岁的宝宝营养食谱(3)
小宝宝要回家了,我又得准备她的食物,还好有了网络,好东西大家一起分享! 10-12个月 这个时期的宝宝要一日三餐'可以吃丁块固体食物'以乳类为主渐渐过渡到以谷类食物为主'每日吃2次奶和3顿主食.现在宝 ...
最新文章
- 一次linux服务器load高达600多的异常处理过程
- 青岛智能物联网产才融合中心成立,山东大学携手百度飞桨海尔海纳云等共育AI人才
- 记一些暂未找到解决方案的问题 -- 持续更新
- 几款开源富文本编辑器优缺点比较
- win10计算机启动一分钟重启,Win10开机提示电脑将在一分钟后自动重启怎么办?...
- VBoxManage获取虚拟机IP地址
- 太极怎么用html写出来,如何用css实现太极图
- 小白python自学—报错问题汇总(持续更新)
- c语言ch能储存多少字符,二级c语言程序设计习题与解答ch5-7函数字符(11页)-原创力文档...
- 数据结构与算法 —— 动态数组
- TS文件合并,这里提供了一点小思路。
- 帮你解决0xc0150002
- excel 姓名汉字转拼音
- 最容易月薪过万城市排名出炉!
- 简单神经网络手算笔记
- 动态规则最佳入门(转)
- 国际期货和国内期货的区别带招商
- yxc_第二章 数据结构(一)_栈和队列
- 我的世界java笔刷指令_原版创世神刷子工具命令方块指令分享
- element-ui的走马灯详解