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-------可用在间接关注/粉丝合集

  1. hashSet1.SymmetricExceptWith(hashSet);//补
  2. hashSet1.UnionWith(hashSet);//并
  3. hashSet1.ExceptWith(hashSet);//差
  4. 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#的几种数据结构的更多相关文章

  1. Redis 5种数据结构使用及注意事项

    1优缺点 非常非常的快,有测评说比Memcached还快(当大家都是单CPU的时候),而且是无短板的快,读写都一般的快,所有API都差不多快,也没有MySQL Cluster.MongoDB那样更新同 ...

  2. Redis中5种数据结构的使用场景介绍

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/108.html?1455861435 一.redis 数据结构使用场景 原 ...

  3. 【原】iOS学习之XML与JSON两种数据结构比较和各自底层实现

    1.XML与JSON两种数据结构的优缺点 1> XML 优点:
 格式统一, 符合标准
 容易与其他系统进行远程交互, 数据共享比较方便 
 缺点: XML文件格式文件庞大, 格式复杂, 传输占 ...

  4. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  5. redis中5种数据结构的使用

    一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...

  6. redis的5种数据结构的简介

    5种数据结构 1.字符串 Redis 字符串是一个字节序列.在 Redis 中字符串是二进制安全的,这意味着它们没有任何特殊终端字符来确定长度,所以可以存储任何长度为 512 兆的字符串. 示例 12 ...

  7. unity学习中经常要碰到的几种数据结构

    常碰到的几种数据结构:1.Array,2.ArrayList,3.List<T>,4.LinkedList<T>,5.Queue<T>,6.Stack<T&g ...

  8. Redis 的几种数据结构&五种数据类型对象

    先看几种数据结构 通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已 ...

  9. Lua中使用table实现的其它5种数据结构

    Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...

  10. Redis中5种数据结构的使用场景

    一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...

随机推荐

  1. laravel之ORM增删改查数据

    1.首先在控制器中添加方法,然后添加路由,接着在模型中操作: 以下是模型 2.以下是控制器中的操作 一下是通过ORM进行更新 删除数据

  2. Windows系统maven安装配置

    Apache Maven是一个软件项目管理工具,基于项目对象模型(Project Object Model,即POM)的概念,Maven可用来管理项目的依赖.编译.文档等信息.使用Maven管理项目时 ...

  3. 19 ArcGIS Server 备份与恢复

    一.备份过程 1.找到已经安装的arcgis server安装目录,并找到备份工具: 2.快捷键win + R启动cmd,将备份工具文件拖入cmd窗口,enter 3. 通过backup.py脚本进行 ...

  4. 107个JS常用方法(持续更新中)

    1.输出语句:document.write(""); 2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个 ...

  5. Java+Selenium向文本框输入内容以后模仿键盘的"ENTRY"

    在自动化测试中我们避免不了要模仿一些键盘上按钮的操作,普通的字母,数字,特殊符号,这些都是很简单的,有时候我们也会模仿"SHIFT","ALT","C ...

  6. Vue 前端面试题

    Vue 前端面试题 1. 说一下 Vue 的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合“发布者 - 订阅者”模式的方式,通过 Object.defineProperty() ...

  7. yii2安装与初始化

    yii2安装与初始化-Yii2学习笔记(一)   一.安装项目: 使用composer下载安装yii2 advanced安装包: composer create-project yiisoft/yii ...

  8. treesoft,couchDB,

    下载 docker 镜像:docker pull docker.io/lu566/treesoft:1.0启动容器:docker run -d -p 127.0.0.1:18080:8080 dock ...

  9. GenericServlet

    Generic-汉语意思:类的adj GenericServlet是一个抽象类,它的源码很容易看懂,继承Servlet接口和ServletConfig接口 所有它里面有父接口里面的方法,所以它就是在S ...

  10. Python 中文分词(结巴分词)

    特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词 ...