• .net 数据结构:线性结构、链表、Set容器、Hash散列


        数据结构有几类:线性结构、链表、Hash散列

              1.线性结构:在内存中存放的顺序是连续的可以节约空间,可以通过索引查找,优点:查询数据很快、缺点:每次修改删除都有内存的移动会慢。

              2.链表:链表结构在内存中是不连续的,不可以通过索引查找,他在每块内存中除了存放值还存放了下块内存的索引,优点:增删快,缺点查询慢

              3.Hash散列:在内存会连续先开辟一块空间(会造成空间浪费)、它的读取,增删都快(少量数据),但由于是根据hash散列算法查找地址索引的,而且他前面分配的空间不够的话,会造成散列冲突,大数据量的情况下(散列冲突到导致替补收到查询地址)效率会急剧下降

        在.net对应的数据结构类型有:

              1.线性结构:Array数组(定长)、arrayList(不定长,这里面存放的是object,有类型安全的问题)、List<T>(泛型)

              2.链表:LinkedList<T>双向链表(针对每个内存节点可以操作如:贪吃蛇,令牌环)

                            Queue<T>队列(先进先出,如多线程日志,边删除边打印等)

                            Stack<T>栈(先进后出)

              3.HashSet<T>集合:hash分布、元素间没有关系、动态增加容量、去重(如统计用户、多次提交之生效一次)也可以取得交叉并补集(效率比List高)

              4.SortedSet<T>排序集合:和HashSet 相比是排序的,有去重和排序的特性可以做如:直播打赏排行

              5.Hash散列:Hashtable :体积可以动态增加 拿着key计算一个地址,然后放入key - value;object-装箱拆箱 如果不同的key得到相同的地址,第二个在前面地址上 + 1;查找的时候,如果地址对应数据的key不对,那就 + 1查找。。;浪费了空间,Hashtable是基于数组实现;查找个数据 一次定位; 增删 一次定位; 增删查改 都很快

                                    Dictionary字典:泛型;key - value,增删查改 都很快;有序的

                                    SortedDictionary 排序字典

                                    SortedList 排序集合

               6.参考文章中的线程安全的数据结构

    {
                    //ConcurrentQueue 线程安全版本的Queue
                    //ConcurrentStack线程安全版本的Stack
                    //ConcurrentBag线程安全的对象集合
                    //ConcurrentDictionary线程安全的Dictionary
                    //BlockingCollection
    }

            此篇文章,说的非常详细,给作者点赞:https://www.cnblogs.com/Dewumu/p/12067573.html  

  • 相关阅读:
    Linux -- 查看是否安装了指定的包
    linux -- 部署java服务器(1) linux安装jdk
    spring boot -- 接收文件接口
    vue3 --相对于vue2的改变T1档次
    243交换输出
    24416进制的简单运算
    7街区最短路径问题
    206矩形的个数
    33蛇形填数
    273字母小游戏
  • 原文地址:https://www.cnblogs.com/YorkQi/p/13387834.html
Copyright © 2020-2023  润新知