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. 将整数m的各位数字保存到数组A中

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/4 20:10 * @description ...

  2. Linux 命令分类学习

    Linux常用命令大全(非常全!!!) 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q ...

  3. EF Oracle TNS 连接

    <oracle.manageddataaccess.client> <version number="*"> <settings> <se ...

  4. Go笔记

    #Go在win下安装 1. https://golang.google.cn/dl/下载 amd64 版本的zip包 2. 解压后将bin目录添加入path 3. go version可显示版本信息

  5. vue 通过自定义指令实现 置顶操作;

    项目需求:要求当前项目每个页面滑到超出一屏的距离时,出现 backTop 按钮,点击则回到最顶端:俗称置顶操作: 因为涉及到的页面较多,每个页面都加肯定显得重复累赘,最终想到了 Vue 的自定义指令  ...

  6. MySQL主从复制延迟的问题 #M1002#

    MySQL主从复制延迟的问题 #M1002# https://mp.weixin.qq.com/s/NwFGER-qn2xQ5TnG-php1Q 更为糟糕的是,MySQL主从复制在大事务下的延迟.同样 ...

  7. Spark DateType cast 踩坑

    前言 在平时的 Spark 处理中常常会有把一个如 2012-12-12 这样的 date 类型转换成一个 long 的 Unix time 然后进行计算的需求.下面是一段示例代码: val sche ...

  8. [LintCode] 77. Longest common subsequences_ Medium tag: Dynamic Programming

    Given two strings, find the longest common subsequence (LCS). Example Example 1: Input: "ABCD&q ...

  9. JavaScript实现RSA加解密

    在GitHub上找到jsencrypt.js对RSA加解密的工具文件,地址分别是:https://github.com/travist/jsencrypt和https://github.com/ope ...

  10. vue中上传文件之multipart/form-data

    首先在项目里用了拦截器的,由于拦截器会将传递的参数转成对象,所以你i提交的时候会发现multipart/form-data或转变成application/json 其次关于input的文件上传是需要一 ...