c#的几种数据结构
Array/ArrayList/List/LinkedList/Queue/Stack/HastSet/SortedSet/Hashtable/SortedList/Dictionary/SortedDictionary
数组(在内存上连续分配,读取快,增删改慢,可坐标访问)
一:Array-----在内存上连续分配的,而且元素类型是一样的,可以坐标访问,读取快,增删改慢,长度不变
二:ArrayList------不定长度,连续分配的,元素没有类型限制,任何元素都是当作 object处理,如果是值类型会有装箱操作,索引赋值不会增加长度会出错
三:List-------核心本质也是Array,内存上都是连续摆放不定长的(连续摆放的都可以用索引访问),泛型(保证类型安全避免装箱拆箱)
链表(元素不连续分配每个元素都有记录前后节点,增删快,查慢)
四:LinkedList--------泛型的特点,元素不连续分配,每个元素都有记录前后节点,不能下标访问,找元素就只能遍历,查找不方便,增删方便
LinkedList<int> linkedList = new LinkedList<int>();
//linkedList[3] 不可下标访问
linkedList.AddFirst(123); 添加方式
linkedList.AddLast(456);
bool isContain = linkedList.Contains(123);
LinkedListNode<int> node123 = linkedList.Find(123); //元素123的位置 从头查找
linkedList.AddBefore(node123, 123);
linkedList.AddAfter(node123, 9);
linkedList.Remove(456);
linkedList.Remove(node123);
linkedList.RemoveFirst();
linkedList.RemoveLast();
linkedList.Clear();
五:Queue------先进先出,可用来放任务延迟执行(A不断写入B不断获取)
1:Dequeue方法是移除,Peek方法不移除
六:Stack-------先进后出
1:Pop方法是移除,Peek方法不移除
集合(Hash分布,元素间没关系,动态增加容量,去重)
七:HashSet-------可用在间接关注/粉丝合集
- hashSet1.SymmetricExceptWith(hashSet);//补
- hashSet1.UnionWith(hashSet);//并
- hashSet1.ExceptWith(hashSet);//差
- hashSet1.IntersectWith(hashSet);//交
八:SortedSet-----可排序
Key-Value(增删改快,浪费了空间,数据量大的话效率会低,非线程安全)
九:Hashtable------key-value形式,无序,体积可以动态增加,拿着key计算一个地址然后放入key-vlaue,都是object有装箱拆箱,如果不同的key得到相同的地址,第二个在前面的地址上+1,查找 的时候如果地址对应的数据Key不对就+1查找;浪费了空间,如果数据太多重复定位效率就下去了,是基于数组实现,增删查改数据一次定位速度快。线程安全(只有一个线程写多个线程读)
十:Dictionary------有序,数据太多的话效率就会下降,非线程安全,ConcurrentDictionary这个是线程安全的字典
十一:SortDictionary-----排序
十二:SortedList-------排序,不能Add()重复添加相同的key
线程安全的
ConcurrentQueue 线程安全版本的Queue
ConcurrentStack线程安全版本的Stack
ConcurrentBag线程安全的对象集合
ConcurrentDictionary线程安全的Dictionary
BlockingCollection
如果实现了IList了的就可以用下标访问,实现IConllection了的可以用Add添加
c#的几种数据结构的更多相关文章
- Redis 5种数据结构使用及注意事项
1优缺点 非常非常的快,有测评说比Memcached还快(当大家都是单CPU的时候),而且是无短板的快,读写都一般的快,所有API都差不多快,也没有MySQL Cluster.MongoDB那样更新同 ...
- Redis中5种数据结构的使用场景介绍
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/108.html?1455861435 一.redis 数据结构使用场景 原 ...
- 【原】iOS学习之XML与JSON两种数据结构比较和各自底层实现
1.XML与JSON两种数据结构的优缺点 1> XML 优点: 格式统一, 符合标准 容易与其他系统进行远程交互, 数据共享比较方便 缺点: XML文件格式文件庞大, 格式复杂, 传输占 ...
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- redis中5种数据结构的使用
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- redis的5种数据结构的简介
5种数据结构 1.字符串 Redis 字符串是一个字节序列.在 Redis 中字符串是二进制安全的,这意味着它们没有任何特殊终端字符来确定长度,所以可以存储任何长度为 512 兆的字符串. 示例 12 ...
- unity学习中经常要碰到的几种数据结构
常碰到的几种数据结构:1.Array,2.ArrayList,3.List<T>,4.LinkedList<T>,5.Queue<T>,6.Stack<T&g ...
- Redis 的几种数据结构&五种数据类型对象
先看几种数据结构 通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已 ...
- Lua中使用table实现的其它5种数据结构
Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...
- Redis中5种数据结构的使用场景
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
随机推荐
- Java课程寒假之《人月神话》有感之二
一.外科手术队伍 即建立一个合理的团队,按照书上的说法就是,在开发一个大的系统的时候,原本精英的团队就可能无法在较短的时间内完成一个大型的程序,在这样的条件下,必须扩大团队的规模,即使这个精英程序员的 ...
- 日期求星期(java)-蓝桥杯
日期求星期问题(java)-蓝桥杯 1:基姆拉尔森计算公式(计算星期) 公式: int week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 此处y,m,d指代年 ...
- ARM_DMA学习
AMBA: advanced(高级) microcontroller bus architecture; 利用多层总线系统减少DMA传输和CPU中断的延迟: DMA流或DMA通道,流优先级,Adres ...
- c++第七周学习小结
时间过得好快,一下就上了好多节c++的课了.我们现在新学了控制语句和函数,这对我来说有点难.老师上课的时候ppt过得有些快,自己会跟不上,所以以后上课前要预习充分.在经过同学和搜索引擎帮助后,我完成了 ...
- css3的动画
一.CSS3变形 CSS3变形是一些效果的集合 如平移.旋转.缩放.倾斜效果 每个效果都可以称为变形(transform),它们可以分别操控元素发生平移.旋转.缩放.倾斜等变化 二.CSS3位移:tr ...
- fiddler修改Requests之前的数据和response 之后的数据
1. 开启抓包 file--->capture traffic 2. 在页面底部黑框输入bpu http://www.runoob.com/?s=mysql 3. 在浏览器URL输入http:/ ...
- Python 学习笔记10 函数
函数其实一段带名字的代码段,我们可以根据代码段,重复执行某一段代码段,或者有条件的执行某一段代码段. 将一段代码定义成函数后,我们可以很方便的根据自己的需求,随时调用该代码段.遇到需求变化的时候,只需 ...
- CGI的工作原理
文章摘自https://blog.csdn.net/nyist327/article/details/41049699 CGI是Web服务器和外部程序之间的一个接口.利用CGI程序可以处理从Web上客 ...
- 音频 m4a 转 wav
背景 最近做智能家居,需要用到一些应答词 需要自己录制.但是在mac下面通过 QuickTime 录制的是 m4a格式.但是应答词需要 wav格式.所以就需要转化了 解决方法 # sox 不行, ff ...
- Win10安装和配置JDK
方法/步骤 1.JDK下载 JDK下载可以在官网下载,如图所示,但由于是国外网站,往往下载速度比较慢,所以推荐在百度软件中心下载.这里要注意自己电脑是32位还是64位,根据具体情况下载相应安装包. ...