选择一个合适的数据结构会对程序的性能有着显著的提高

线性表和链表:

  1、LinkedList<T>:适合于元素数组不固定,存在大量列表的头尾添加动作场合。其它可使用List<T>。

  2、Arra:元素数量固定,需要用到检索(即索引器)。

  3、List<T>:元素数量不固定,需要用到索引器。

栈和队列(只有在模拟栈和队列时才考虑):

  1、Stack (Stack<T>):当需要实现 LIFO(Last In First Out)时。

  2、Queue (Queue<T>):当需要实现 FIFO(First In First Out)时。

哈希(需要大规模查找):

  1、Hash table (Dictionary<K,T>):当需要使用键值对(Key-Value)来快速添加和查找,并且元素没有特定的顺序时。有了泛型版本的字典,我们几乎永远不需要使用非泛型的HashTable

  2、Tree-based dictionary (SortedDictionary<K,T>):当需要使用键值对(Key-Value)来快速添加和查找,并且元素总是需要根据 Key 来排序时。

集合(保存一组唯一的值/模拟集合运算):

  1、Hash table based set (HashSet<T>):当需要保存一组唯一的值,并且元素没有特定顺序时。

  2、Tree based set (SortedSet<T>):当需要保存一组唯一的值,并且元素总是需要排序时。

参考风口上的猪.Net面试系列文章http://www.cnblogs.com/haoyifei/p/5790168.html

C#数据结构选择的更多相关文章

  1. JAVA数据结构--选择排序

    选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然 ...

  2. python算法与数据结构-选择排序算法(33)

    一.选择排序的介绍 选择排序(Selection sort)是一种简单直观的排序算法.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素, ...

  3. [转载]锁无关的(Lock-Free)数据结构

    锁无关的(Lock-Free)数据结构 在避免死锁的同时确保线程继续 Andrei Alexandrescu 刘未鹏 译 Andrei Alexandrescu是华盛顿大学计算机科学系的在读研究生,也 ...

  4. mysql选择上一条、下一条数据记录,排序上移、下移、置顶

    1.功能须要 完毕列表排序上移,下移,置顶功能.效果例如以下图所看到的: 2设置思路 设置一个rank为之间戳,通过选择上移,就是将本记录与上一条记录rank值交换,下移就是将本条记录与下一条记录ra ...

  5. 关于Mysql索引的数据结构

    索引的数据结构 1.为什么使用索引 概念: 索引是存储索引用于快速找到数据记录的一种数据结构,就好比一本书的目录部分,通过目录中对应的文章的页码,便可以快速定位到需要的文章,Mysql 中也是一样的道 ...

  6. 性能优化之Java(Android)代码优化

    最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇——Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...

  7. Android使用的设计模式2——策略模式

    今天讲解一下策略模式,策略模式也是很常用的设计模式,对多种算法或者数据结构选择使用的情况下,经常会使用策略模式来管理这些算法.下面会简单讲解一下策略模式的概念和基本实现.然后结合Android里面的实 ...

  8. HashMap总结

    最近朋友推荐的一个很好的工作,又是面了2轮没通过,已经是好几次朋友内推没过了,觉得挺对不住朋友的.面试反馈有一方面是有些方面理解思考的还不够,平时也是项目进度比较紧,有些方面赶进度时没有理解清楚的后面 ...

  9. C语言代码优化(转)

    .选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多.数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则 ...

随机推荐

  1. C++模板类继承的一个小技巧

    先说一下background前段时间想实现一个Sqlite localstorage的功能,对应不同的Model 实体有不同的table, 每一次sql操作的函数签名中会有model实体中的struc ...

  2. [CSS]多浏览器兼容的垂直居中,兼容多个IE

    相信你都是在兼容垂直居中而烦恼,翻阅多个网站总是找不到理想的方法而苦恼,来到这里你的问题解决了!如果对你有帮助请点个赞,谢谢. 多兼容垂直居中,在IE6-9亲自测试并通过 <!doctype h ...

  3. Python自动化 【第十五篇】:CSS、JavaScript 和 Dom介绍

    本节内容 CSS javascript dom CSS position标签 fixed: 固定在页面的某个位置 relative + absolute: 相对定位 opacity:0.5 设置透明度 ...

  4. 自动化前端构建工具--gulp

    Gulp是一个基于任务的javascript工程命令行流式构建工具.为什么要用Gulp呢?前端开发进入到工程化阶段,我们需要压缩合并文件,加MD5戳:如果使用 CoffeeScript/ES6 去代替 ...

  5. SRM 146 DIV1 600

    Problem Statement      Masterbrain is a two player board game in which one player decides on a secre ...

  6. SQL中判断一串字符中是否有特定的字符

    ),) SET @s='1,2,3,4,5,6,7,8,9,10' 一:SET @sql='select col='''+ replace(@s,',',''' union all select '' ...

  7. ie 出现 append无效

    今天发现用ie append  无效,但是在谷歌浏览器上可以使用,问题在于 拼接字符串的时候出现多了一个标签. 解决方法:检查是否有多余或少写html标签.

  8. Reflector.exe 破解注意事项

    需要把网络断掉,然后选择手动激活 总结经验:操作步骤要仔细看清,否则会更浪费时间

  9. EF外键关联

    客户里面存在客服外键 基类模型 public class ModelBase { public ModelBase() { CreateTime = DateTime.Now; } [Key] pub ...

  10. Python——函数中的关键字参数

    关键字参数 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict.请看 ...