C#常用的数据结构

数据结构:
                1.Set集合,纯粹的容器,无需存储,就是一个容器
                2.线型结构:在存储的时候,一对一存储
                3.树形结构:表达式目录树(二叉树)、菜单结构:一对多
                4.图形结构:扩扑图、网状结构(地图开发,用的上)

            1.线程结构
                1.线程结构:Array/ArrayList/List/LinkedList/Queue/Stack/HastSet/SortedSer/Hashtable/SortedList
                            Dictionaty/SortedDictionary
                2.数组:内存连续储存,节约空间,可以索引访问,读取快,增删慢
                
                Array:在内存上连续分配的,而且元素类型是一样的
                      可以坐标访问,读取快---增减慢,长度不变

                ArrayList:在以前的开发中使用不较多,不定长度,连续分配的
                          元素没有限制,任何元素都是当成Object处理,如果是值类型,会有装箱操作
                          读取快,增删慢

                List:是Array,内存上都是连续摆放,不定长度,泛型,保证类型安全,避免装箱拆箱 性能也比ArrayList高
                      读取快,增删慢
               以上特点:读取快,增删相对慢

                3.非连续摆放,存储数据+地址,找数据的话就只能顺序查找,读取慢,增删快
                    1.LinkedList:泛型的特点:链表,元素不连续分配,每个元素都有记录前后节点,节点值可以重复
                                 能不能以下标访问:不能没找元素只能遍历,查找不方便
                                 增删 就比较方便
                        LinkedList<int> node123 = linkedList.Find(123);得到节点
                    
                    2.Queue 就是链表  先进先出 放任务延迟执行,A不断写入日志任务   B不断获取任务去执行
                        Queue queue = new Queue();
                        queue.Equals(); //添加数据
                        queue.Dequeue(); //获取并移除数据

                    3.Stack 就是链表  先进先出  解析表达式目录树,先产出的数据后使用,
                            操作记录为命令,撤销的时候是倒序 
                            Stack stack = new Stack();
                            stack.Push();//添加数据
                            stack.Pop();//获取并移除数据
               2.Set纯粹的集合,容器,东西丢进去,唯一性,无序的
                    1.集合:hash分布,元素间没有关系,动态增加容量,去重
                            统计用户IP:IP投票  交叉并补---二次好友/间接关注/粉丝合集
                    2. 排序的集合:去重 而且排序
                            统计排名 -- 没统计一个就丢进集合里
                            IComparer<T> comparer 自定义对象的排序,就用这个指定
              3.Hashtable  Key-value  体积可以动态增加  拿着Key计算一个地址,然后放入Key-value
                            object - 装箱拆箱   如果不同的key得到相同的地址,第二个在前面地址上+1 浪费了空间,Hashtable是基于数组实现
                            
              4.线程安全
                    ConcurrentQueue  线程安全版本的Queue
                    ConcurrentStack 线程安全版本的Stack
                    ConcurrentBag   线程安全的对象集合
                    ConcurrentDictionary    线程安全的Dictionary
                    BlockingCollection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡心朴朴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值