数据结构:
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
C#常用的数据结构
最新推荐文章于 2023-02-15 16:20:52 发布