当前位置: 首页 > news >正文

电商网站大全肇庆seo排名

电商网站大全,肇庆seo排名,虚拟空间应用程序下载,做汽车网站开题报告的意义C#集合类型概述 集合是.NET FCL(Framework Class Library)中很重要的一部分。所有的集合类都继承自IEnumerable。集合类总体可分为一下几类#xff1a;关联/非关联型集合#xff0c;顺序/随机访问集合#xff0c;顺序/无序集合#xff0c;泛型/非泛型集合#xff0c;线程…C#集合类型概述 集合是.NET FCL(Framework Class Library)中很重要的一部分。所有的集合类都继承自IEnumerable。集合类总体可分为一下几类关联/非关联型集合顺序/随机访问集合顺序/无序集合泛型/非泛型集合线程安全集合。 各集合类底层接口关系图 泛型与非泛型集合类的分析 泛型集合是类型安全的基于固定的泛型T,运行时不需要像非泛型的执行Object和具体类型的类型转换。泛型集合的效率相对较高。两者都能实现数据存储不同的是泛型只能存放T类型数据有运行时检测而非泛型的都转化为Object存储能存储任意类型包括值类型会带来装箱拆箱的性能损耗同时都是Object类型弱类型编译时无法类型检测运行时会导致类型不一致的安全性问题。具体接口/类分析 CollectionBase/DictionaryBase的目的 都是抽象类不能实例化目的是提供给用户自定义实现强类型的集合解决一般非泛型集合的弱类型不安全的问题。 IEnumerator/IEnumerable IEnumerator定义了我们遍历集合的基本方法以便我们可以实现单向向前的访问集合中的每一个元素。 所有的集合类都继承了IEnumerator接口包括String类。而IEnumerable只有一个方法GetEnumerator即得到遍历器。 ICollectionT和ICollection 从最上面第一张图我们可以知道ICollection是直接继承自IEnumerable。而实际上也是如此我们可以说ICollection比IEnumerable多支持一些功能不仅仅只提供基本的遍历功能还包括 统计集合和元素个数  获取元素的下标  判断是否存在  添加元素到未尾  移除元素等等。。。  ICollection 与ICollectionT 略有不同ICollection不提供编辑集合的功能即Add和Remove。包括检查元素是否存在Contains也不支持。 IList和IList IList则是直接继承自ICollection和IEnumerable。所以它包括两者的功能并且支持根据下标访问和添加元素。IndexOf, Insert, RemoveAt等等。我们可以这样说IEnumerable支持的功能最少只有遍历。而ICollection支持的功能稍微多一点不仅有遍历还有维护这个集合的功能。而IList是最全的版本。 IReadOnlyListT 这个是在Framework4.5中新增的接口类型可以被看作是IList的缩减版去掉了所有可能更改这个集合的功能。比如Add, RemoveAt等等。 IDictionaryTKey,TValue IDictionary提供了对键值对集合的访问也是继承了ICollectionT和IEnumerable扩展了通过Key来访问和操作数据的方法。 关联性泛型集合类 关联性集合类即我们常说的键值对集合允许我们通过Key来访问和维护集合。我们先来看一下 FCL为我们提供了哪些泛型的关联性集合类 Dictionary TKey,TValue  SortedDictionaryTKey,TValue  SortedListTKey,TValue  DictionaryTKey,TValue DictionaryTKey,TValue 是我们最常用的关联性集合了它的访问添加删除数据所花费的时间是所有集合类里面最快的因为它内部用了Hashtable作为存储结构所以不管存储了多少键值对查询/添加/删除所花费的时间都是一样的,它的时间复杂度是O(1)。 DictionaryTKey,TValue优势是查找插入速度快那么什么是它的劣势呢因为采用Hashtable作为存储结构就意味着里面的数据是无序排列的所以想按一定的顺序去遍历DictionaryTKey,TValue里面的数据是要费一点工夫的。 作为TKey的类型必须实现GetHashCode()和Equals() 或者提供一个IEqualityComparer否则操作可能会出现问题。 SortedDictioanryTKey,TValue SortedDictionaryTKey,TValue和DictionaryTKey,TValue大致上是类似的但是在实现方式上有一点点区别。SortedDictionaryTKey,TValue用二叉树作为存储结构的。并且按key的顺序排列。那么这样的话SortedDictionaryTKey,TValue的TKey就必须要实现IComparableTKey。如果想要快速查询的同时又能很好的支持排序的话那就使用SortedDictionary吧。 SortedListTKey,TValue SortedListTKey,TValue是另一个支持排序的关联性集合。但是不同的地方在于SortedList实际是将数据存存储在数组中的。也就是说添加和移除操作都是线性的时间复杂度是O(n)因为操作其中的元素可能导致所有的数据移动。但是因为在查找的时候利用了二分搜索所以查找的性能会好一些时间复杂度是O(log n)。所以推荐使用场景是这样地如果你想要快速查找又想集合按照key的顺序排列最后这个集合的操作添加和移除比较少的话就是SortedList了。 非关联性泛型集合类 非关联性集合就是不用key操作的一些集合类通常我们可以用元素本身或者下标来操作。FCL主要为我们提供了以下几种非关联性的泛型集合类。 ListT  LinkedListT  HashSetT  SortedSetT  StackT  QueueT  ListT 泛型的List 类提供了不限制长度的集合类型List在内部维护了一定长度的数组(默认初始长度是4)当我们插入元素的长度超过4或者初始长度 的时候会去重新创建一个新的数组,这个新数组的长度是初始长度的2倍不永远是2倍当发现不断的要扩充的时候倍数会变大然后把原来的数组拷贝过来。所以如果知道我们将要用这个集合装多少个元素的话可以在创建的时候指定初始值这样就避免了重复的创建新数组和拷贝值。 另外的话由于内部实质是一个数组所以在List的未必添加数据是比较快的但是如果在数据的头或者中间添加删除数据相对来说更低效一些因为会影响其它数据的重新排列。 LinkedListT LinkedList在内部维护了一个双向的链表也就是说我们在LinkedList的任何位置添加或者删除数据其性能都是很快的。因为它不会导致其它元素的移动。一般情况下List已经够我们使用了但是如果对这个集合在中间的添加删除操作非常频繁的话就建议使用LinkedList。 HashSetT HashSet是一个无序的能够保持唯一性的集合。我们也可以把HashSet看作是DictionaryTKey,TValue只不过TKey和TValue都指向同一个对象。HashSet非常适合在我们需要保持集合内元素唯一性但又不需要按顺序排列的时候。 HashSet不支持下标访问。 SortedSetT SortedSet和HashSet,就像SortedDictionary和Dictionary一样还记得这两个的区别么SortedSet内部也是一个二叉树用来支持按顺序的排列元素。 StackT 后进先出的队列  不支持按下标访问 QueuT 先进先出的队列  不支持按下标访问 推荐使用场景 非泛型类集合 泛型集合类是在.NET2.0的时候出来的,也就是说在1.0的时候是没有这么方便的东西的。现在基本上我们已经不使用这些集合类了除非在做一些和老代码保持兼容的工作的时候。来看看1.0时代的.NET程序员们都有哪些集合类可以用。 ArraryList  后来被ListT替代。 HashTable 后来被DictionaryTKey,TValue替代。  Queue 后来被QueueT替代。  SortedList 后来被SortedListT替代。  Stack 后来被StackT替代。 线程安全的集合类 ConcurrentQueue 线程安全版本的Queue  ConcurrentStack线程安全版本的Stack  ConcurrentBag线程安全的对象集合  ConcurrentDictionary线程安全的Dictionary  BlockingCollection .NET为我们提供的集合类是我们很常用的工具类之一希望这篇文章能够帮助大家更好的认识这些集合类。当然个人感觉还有不完善的地方比如说HashTable和Binary Search Tree就没有细究下去包括单向链表和双向链表之间的对比本文也没有提及。感兴趣的朋友可以深入了解一下。
http://www.yutouwan.com/news/76534/

相关文章:

  • 长沙网站优化宝安做网站
  • 安丘网站开发大连市网站制作电话
  • 做公司网站用哪个公司比较好小工程施工合同协议书
  • 成都企业网站备案流程余姚专业网站建设公司
  • 网站建设和推广电话销售话术番禺大石网站建设
  • 手机网站建设视频教程、苏州马可波罗网站建设
  • 网站生成软件西安网站建设推广
  • 淄博临淄网站建设wordpress详细教程
  • 网站建设需求和页面需求怎么提自己做网站很难
  • 梅州建站方法泉州百度网站推广
  • 政务网站建设论文WordPress页面模板怎么选
  • 如何创建本地站点云南省住房与城乡建设厅网站
  • 网站开发的层次邵阳网站制作建设
  • 网站开发最重要的技巧个人空间网站免费
  • wordpress适合电影网站的模板空间站天宫vr全景
  • 怎么建设淘客自己的网站常熟建设合同备案在哪个网站
  • 金华网站建设luopan文具电子商务网站开发内容
  • 响水网站制作公司比赛网站开发
  • 长沙网站微信开发如何做网页推广
  • 个人交互网站北京市工程建设交易信息网站
  • 网站和二级目录权重数据中心机房运维方案
  • 甘肃永靖建设住建局网站宁波制作网站的公司
  • 江苏省城乡和建设厅网站首页诸城做网站
  • 最专业微网站首选公司photoshop手机版安卓
  • 浏览有关小城镇建设的网站记录江苏建设工程招标网和淮安市公共资源交易网
  • 做1688网站运营工资怎么样做网站服务器电脑配置
  • 长沙h5手机网站制作建e网室内
  • 做代金券的网站seo是什么服务器
  • 机械类做的最好的网站京东官方网上商城
  • 梅州建网站国产前端框架 做网站