集合的学习总结

 参考:http://www.cnblogs.com/jesse2013/p/CollectionsInCSharp.html  http://www.cnblogs.com/sunqiang/p/4444235.html
http://www.cnblogs.com/cxiaojia/archive/2012/08/10/2632055.html 线性表2种区别


分为顺序存储结构(顺序表)和链式存储结构(链表)
顺序表在内存中是顺序存储,首尾相连,遍历方便(O(1),最快O(logn)),但是插入删除复杂(最慢达到o(n)),因为改动一个其他的位置都要改变
链表是无序的,一般包含一个值域和指针域,指针域存储指向下一个元素的位置,插入删除方便(O(1)),但是访问和遍历复杂度高(O(n))
数组是顺序表 list本质是数组,数组无法动态分配大小,list会根据集合的大小在内存中动态的分配内存和拷贝数据集合
stack 是后进先出的队列 queue是先进先出的队列
关联性集合(可以通过key值查找的)Dictionary-哈希表 SortedDictionary-二叉树 SortedList-支持排序的数组 字典表查找速度快,内部是哈希表,不支持顺序遍历,SortedDictionsry是按key值进行排序的字典 SortedList是按key排序的数组
非关联性集合 List-动态数组(顺序表) LinkedList-双向链表 stack queue haspset等

  yield用来构建迭代器,返回类型必须是IEnumerable\IEnumerable<T>\IEnumerator\IEnumerator<T>这几种类型
  构建yield迭代器的类不必非得实现IEnumerable
  yield只有yield return 和yield break两种用法
  想要对类使用foreach 类就必须实现IEnumerable接口
  返回IEnumerable-支持遍历的 返回IEnumerator-不支持遍历的

posted @ 2016-05-30 15:41  Basker  阅读(168)  评论(0编辑  收藏  举报