zoukankan      html  css  js  c++  java
  • .Net中的集合类

    ((I)).集合类型
    1.
    一般集合
    I.Array
    a.Array
    中的秩是Array中的维数.一个Array可以有一个或多个秩.
    Array
    具有固定的容量.如果有可变容量,则用Array.CreateInstance,其可以不从零开始存储.
    II.ArrayList
    集合类型
    a.
    是数组的复杂版本.Array是数组是固定的,ArrayList类是根据需要自动扩展的.如果更改了Array.Capacity属性的值,则自动进行内存重新分配和元素复制.
    b.ArrayList
    提供添加/或移除某一范围元素的方法.Array,只能一次获取或设置一个元素的值.
    c.
    使用Synchronized方法可以很容易地创建ArrayList的同步版本.Array将一直保持它,直到用户实现同步为止.
    d.ArrayList
    提供将只读和固定大小包装返回到集合的方法.Array不提供.
    e.Array
    提供ArrayList所不具有的某些灵活性.
    I.
    可以设置Array的下限,ArrayList的下限始终为零.
    II.Array
    可以具有多个维度,ArrayList始终是唯一的.
    III.Array
    是特定类型(不是Object),ArrayList性能好.ArrayList在存储和检索时经常发生拆箱和装箱操作现象.
    III.
    哈希表集合
    a.Hashtable
    类基于IDictionary接口,因此该集合中的每一元素是键和值对.
    b.Object.GetHashCode
    方法为其自身生成哈希代码.还可以通过使用Hashtable构造函数,为所有元素指定一个哈希函数.
    IV.SortedList
    集合类型
    a.SortedList
    类类似于HashtableArrayList间的混合.
    b.SortedList
    的每一元素都是键对值,提供只返回键列表或只返回值列表的方法.
    c.
    如果想要一个保留键和值的集合,并且还需要索引的灵活性,则使用SortList.
    V.
    队列集合类型
    a.
    如果需要以信息在集合中存储的相同顺序来访问这些信息,请使用Queue.
    b.Enqueue
    将一个元素添加到Queue的队尾.DequeueQueue处移除最旧的元素.PeekQueue的开始处返回最旧的元素,但不将从Queue中移除.
    VI.
    堆栈集合类型
    a.
    如果需要以信息在集合中存储的相反顺序来访问这些信息,请使用Queue.
    b.Push
    Stack的顶部插入一个元素.PopStack的顶部移除一个元素.Peek返回处于Stack顶部的元素,但不将其从栈顶上移除.
    2.
    位集合
    I.BitArray
    a.BitArray
    是一个集合类,容量与计数相同.通过增加Length属性来将元素添加到BitArray;通过降低Length属性将元素删除.
    b.
    独特方法,And/Or/Xor/Not/SetAll.
    c.
    位于System.Collections.
    II.BitVector32
    a.
    速度快,精确存储32,并且同时存储标志位和小整数.
    b.
    位于System.Collections.Specialized.
    3.
    专用集合
    I.NameValueCollection
    a.
    基于NameObjectCollectionBase,NameValueCollection可以接受每个键多个值,NameObjectCollectionBase接受每个键,但只有一个值.
    ((2)).选择用哪种集合
    ***Queue
    Stack:需要一个序列列表,其中的元素在检索后放弃.否则,用其它集合.
    ***Queue
    Stack:按一定的顺序访问这些元素(先进先出,后进先出),如果随机,用其它集合.
    ***
    是否通过索引访问每一个元素?
    *ArrayList
    StringCollection提供通过元素的从零开始的*索引*对其元素进行访问.
    *(Hashtable)(SortedList)(ListDictionary)(StringDictionary)
    提供通过元素的**对其元素进行访问
    *(NameObjectCollectionBase)
    (NameValueCollection)提供或者通过元素的从零开始的*索引*或者通过元素的**对其元素进行访问.
    ***
    每一元素将包含一个值/一个值和一个键的组合还是一个键和多个值的组合?
    *
    一个值:使用基于IList的任何集合
    *
    一个键和一个值:使用基于IDictionary的任何集合.
    *
    一个键和多个值:使用System.Collections.Specialized命名空间中的NameValueCollection.
    ***
    是否需要用与元素方式不同的方式对元素排序?
    *Hashtable
    通过键的哈希代码对元素进行排序.
    *SortedList
    基于IComparer实现,通过键对元素进行排序.
    *ArrayList
    提供Sort方法该方法将IComparer实现作为一个参数采用.
    ***
    是否需要信息的快速搜索和检索?
    *
    对于小集合(十项或更少),ListDictionary快于Hashtable.
    ***
    是否需要只接受字符串的集合?
    *StringCollection(
    基于IList)StringDictionary(基于IDictionary)位于System.Collections.Specialized命名空间中.
     
    ((3)).强类型集合
    强类型集合类与上面讲的集合特性差不多一样,基本上都是一一对应的关系,只不过是强类型;并且命名空间在System.Collection.Generic下面. 不需要自定义强制类型集合,可以直接调用System.Collection.Generic命名空间下面的类
    这里就不作多说.这里只保留了个以前讲课时的PPT.
    1.幻灯片课程
    下载:
    2.示例代码
    下载:
  • 相关阅读:
    .NET开发相关使用工具和框架
    Jquery.KinSlideshow 焦点图标轮换
    可能发生了架构损坏。请运行 DBCC CHECKCATALOG。
    mssql使用问题大合集
    做饭流程js
    点击导航切换和隐藏
    批量修改文件名后缀
    GB2312转码utf-8字符方法
    border三角形的3种方式
    移动端nav导航栏
  • 原文地址:https://www.cnblogs.com/si812cn/p/1426830.html
Copyright © 2011-2022 走看看