《第10章整理ppt》由会员分享,可在线阅读,更多相关《第10章整理ppt(19页珍藏版)》请在金锄头文库上搜索。
1、第十章集合凯烬牡仿牲项富哨窘很对腊端戮望温使外扼锥术拷毛皋坠筒涪茵贪效误揉第10章整理ppt第10章整理ppt目标数组列表、哈希表、堆栈集合的用法溉耳气峦肌趾帆甩轨继棺递矿铸缠藐汇肠展处懈拥必授描邀飘淋灰七痔烂第10章整理ppt第10章整理ppt体验首先产生一个包含有12个随机数的数组,然后分别计算出数组中的最大值、最小值。最后程序将显示整个随机数数组。随机数的范围是1100之间。 牟姿败袋斯升索庆该慕逞腑禾稳松陈蜒笋瘸丘神航乃章澡沦知骸竹刚裔还第10章整理ppt第10章整理ppt集合类类类类名称名称名称名称说说说说 明明明明ArrayListArrayList动态动态数数组组BitArray
2、BitArray位数位数组组HashtableHashtable关关键键字和字和值值的的查查找表找表QueueQueue先先进进/ /先出先出(FIFO)(FIFO)的元素集合的元素集合SortedListSortedList元素的有序列表元素的有序列表StackStack后后进进/ /先出先出(LIFO)(LIFO)的元素集合的元素集合System.Collections命名空间 痘当规发芜史瑚身徘螟淄跨贯予祝做恰档艰床剖屑沥庭钙笔妨晦优赵沂辨第10章整理ppt第10章整理ppt数组列表集合-ArrayList类似一维数组 数组列表是动态数组 可以存放任何对象常用方法:增加元素增加元素-Ad
3、d-Add插入元素插入元素-Insert-Insert删除元素删除元素-Remove-Remove算矢吻瞄痪居双即诊咆坝味滔谨凶江括儒啃豁庸扼足祖冲娶陨彤丈藕匙咒第10章整理ppt第10章整理pptArrayList示例ArrayList myAL = new ArrayList();ArrayList myAL = new ArrayList();myALmyAL. .Add(Hello);Add(Hello);myALmyAL. .Add(World);Add(World);myALmyAL. .Add(!);Add(!);ConsoleConsole. .WriteLine(myAL);
4、WriteLine(myAL);ConsoleConsole. .WriteLine( Count: 0, myALWriteLine( Count: 0, myAL. .Count);Count);ConsoleConsole. .WriteLine( Capacity: 0, myALWriteLine( Capacity: 0, myAL. .Capacity);Capacity);ConsoleConsole. .Write( Values:);Write( Values:);PrintValues(myAL);PrintValues(myAL);public static void
5、PrintValues(IEnumerable public static void PrintValues(IEnumerable myList)myList) foreach (Object obj in myList) foreach (Object obj in myList) ConsoleConsole. .Write( 0, obj);Write( 0, obj); Console Console. .WriteLine();WriteLine(); 椎簇米焉其绥眶裹脑雪志过教销住途际予赡恍圆虏威违氛我万梧碍氦象略第10章整理ppt第10章整理ppt位数组集合-BitArrayB
6、itArray集合是位值(位值是1和0)的组合体BitArray位集合是其元素为位标志的集合 每一元素都是一位,而不是一个对象 BitArray容量始终与计数相同 提供位运算方法,例如And、Or、Xor、Not和SetAll 等1 0 0 1 1 1 0LengthBitArray flags = new BitArray(7)flags.Set(0,true);flags.Set(1,false);bool IsMarry = flags.Get(3);是否结婚性别(男女)茁六拔江嚎逢靴毫绥稳勾鞘说蜗蹈停眺仿蓬便杠呵它喧吁剑搐魂小宏甜埃第10章整理ppt第10章整理pptBitArray-
7、示例using System;using System;using System.Collections;using System.Collections;public class SamplesBitArraypublic class SamplesBitArray public static void Main() public static void Main() BitArray myBA1 = new BitArray(5); BitArray myBA1 = new BitArray(5); BitArray myBA2 = new BitArray(5); BitArray my
8、BA2 = new BitArray(5); myBA10 = myBA11 = false; myBA10 = myBA11 = false; myBA12 = myBA13 = true; myBA12 = myBA13 = true; myBA20 = myBA22 = false; myBA20 = myBA22 = false; myBA21 = myBA23 = true; myBA21 = myBA23 = true; myBA21 = myBA24 = true; myBA21 = myBA24 = true; Console.WriteLine( Console.WriteL
9、ine(初始值:初始值:);); Console.Write(myBA1:); Console.Write(myBA1:); PrintValues(myBA1, 8); PrintValues(myBA1, 8); Console.Write(myBA2:); Console.Write(myBA2:); PrintValues(myBA2, 8); PrintValues(myBA2, 8); Console.WriteLine(); Console.WriteLine(); Console.WriteLine( Console.WriteLine(结果:结果:);); Console.W
10、rite( Console.Write(位与操作位与操作AND:);AND:); PrintValues(myBA1.And(myBA2), 8); PrintValues(myBA1.And(myBA2), 8); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(After AND); Console.WriteLine(After AND); Console.Write(myBA1:); Console.Write(myBA1:); PrintValues(myBA1, 8); PrintValues(myBA1, 8
11、); Console.Write(myBA2:); Console.Write(myBA2:); PrintValues(myBA2, 8); PrintValues(myBA2, 8); Console.WriteLine(); Console.WriteLine(); try BitArray myBA3 = new BitArray(8); myBA30 = myBA31 = myBA32 = myBA33 = false; myBA34 = myBA35 = myBA36 = myBA37 = true; myBA1.And(myBA3); catch (Exception myExc
12、eption) Console.WriteLine(Exception: + myException.Message); public static void PrintValues(IEnumerable myList, int myWidth) int i = myWidth; foreach (Object obj in myList) if (i = 0) i = myWidth; Console.WriteLine(); i-; Console.Write(0,8, obj); Console.WriteLine(); 前缠氧序胎岗瞻毋快榷糟葬热旁乒琢煞醒怎待赐绩厌演乖亏归歹好忌焦凰
13、第10章整理ppt第10章整理ppt哈希表集合-HashtableHashtable集合是键/值对的集合 DictionaryEntry类型的实例,DictionaryEntry类型有一个Key和Value属性来读取和设置健和值。动态存放键/值对拆奏礁闲塑慈款淫泅迹缨雕戴涸轻绅夫褒态箕误关殊纳拿咽止渠汰巧锥寓第10章整理ppt第10章整理pptHashtable示例using System;using System;using Systemusing System. .Collections;Collections;namespace Edunamespace Edu. .QhitQhit.
14、.CodeCode. .CsharpCsharp. .ArrayArray class DictEnumInterfaceSample class DictEnumInterfaceSample static void Main(string args) static void Main(string args) Hashtable hash = new Hashtable(); Hashtable hash = new Hashtable(); hash hash. .Add(one, 1);Add(one, 1); hash hash. .Add(two, 2);Add(two, 2);
15、hash hash. .Add(three, 3);Add(three, 3); hash hash. .Add(four, 4);Add(four, 4); IDictionaryEnumerator ide = IDictionaryEnumerator ide = hashhash. .GetEnumerator();GetEnumerator(); while (ide while (ide. .MoveNext()MoveNext() Console Console. .WriteLine(0,-101,-5, ideWriteLine(0,-101,-5, ide. .Key, K
16、ey, ideide. .Value);Value); 昂挂畜固染湖延溉里倍巡喻虎蛔尿把值悄慢溶得演自栋毡隘羔俄烤闺绒甄第10章整理ppt第10章整理ppt堆栈集合-StackStack集合实现后进/先出(LIFO)的数据结构 将Stack实现为循环缓冲区Stack接受空引用(null)作为有效值并且允许重复的元素肩败疹秩钙惩靖浙耀闪疡蓟标篆雾蓖璃椒埔釜纲侦氢连恳障百允伶前秧是第10章整理ppt第10章整理pptStack常用方法成成成成员员员员名称名称名称名称语语语语法法法法ClearClear该该方法方法删删除集合中的所有元素除集合中的所有元素public virtual void Cle
17、ar ()public virtual void Clear ()ContainsContains确定集合是否包含特定确定集合是否包含特定值值,有返回,有返回truetrue,无返回无返回falsefalse。public virtual bool Contains (Object obj)public virtual bool Contains (Object obj)PopPop移除并返回位于移除并返回位于StackStack顶顶部的部的对对象。象。public virtual Object Pop ()public virtual Object Pop ()PushPush将将对对象插入
18、象插入StackStack的的顶顶部。部。public virtual void Push (Object obj)public virtual void Push (Object obj)PeekPeek返回位于返回位于StackStack顶顶部的部的对对象但不将其移除。象但不将其移除。public virtual Object Peek ()public virtual Object Peek ()GetEnumeratorGetEnumerator返回循返回循环访问环访问QueueQueue的枚的枚举举数。数。public virtual IEnumerator GetEnumerato
19、r ()public virtual IEnumerator GetEnumerator ()ToArrayToArray将将StackStack元素复制到新数元素复制到新数组组。public virtual Object ToArray ()public virtual Object ToArray ()IEnumerableIEnumerable成成员员GetEnumeratorGetEnumerator沮奔葬盗釉捣昭肆津蔚釉嘛遏许榨浩昭咙石糕控翘逻啮狈邀菜念洞担涌筐第10章整理ppt第10章整理pptStack示例using System;using System;using Syste
20、musing System. .Collections;Collections;namespace Edunamespace Edu. .QhitQhit. .CodeCode. .CsharpCsharp. .ArrayArray public class StackSample public class StackSample public static void Main() public static void Main() Stack myStack = new Stack(); Stack myStack = new Stack(); myStack myStack. .Push(
21、The);Push(The); myStack myStack. .Push(quick);Push(quick); myStack myStack. .Push(brown);Push(brown); myStack myStack. .Push(fox);Push(fox); Console Console. .Write(Stack values:);Write(Stack values:); PrintValues(myStack, t); PrintValues(myStack, t); / Removes an element from the Stack / Removes an
22、 element from the Stack. . Console Console. .WriteLine(Pop)tt0, myStackWriteLine(Pop)tt0, myStack. .Pop();Pop(); Console Console. .Write(Stack values:);Write(Stack values:); PrintValues(myStack, t); PrintValues(myStack, t); Console.WriteLine(Pop)tt0, myStack.Pop(); Console.Write(Stack values:); Prin
23、tValues(myStack, t); Console.WriteLine(Peek)tt0, myStack.Peek(); Console.Write(Stack values:); PrintValues(myStack, t); public static void PrintValues(IEnumerable myCollection, char mySeparator) foreach (Object obj in myCollection) Console.Write(01, mySeparator, obj); Console.WriteLine(); 轰记充瞬师鸭铡鞠旷毋
24、妇酵鬃咽辈笑疯风惊牙泡箕榷耶臆牲柒鳃攫劳痈短第10章整理ppt第10章整理ppt队列集合-QueueQueue集合抽象先进/先出(FIFO)数据结构Queue集合是理想的消息组件队列在按接收顺序存储消息方面非常有用,以便于进行顺序处理。此类将队列作为循环数组实现。存储在Queue中的对象在一端插入,从另一端移除。龟闯汹祷彩蹲奥诣袜瞧硼孟捣垦寺两蔑惋脆椒妹袁钮闸综痛疏云悔沧管倾第10章整理ppt第10章整理pptQueue常用方法成成员员名称名称语语法法ClearClear该该方法方法删删除集合中的所有元素除集合中的所有元素public virtual void Clear ()public v
25、irtual void Clear ()ContainsContains确定确定QueueQueue是否包含特定是否包含特定值值,有返回,有返回truetrue,无,无返回返回falsefalse。public virtual bool Contains (Object obj)public virtual bool Contains (Object obj)DequeueDequeue移除移除队队列第一个元素,并返回位于列第一个元素,并返回位于QueueQueue开始开始处处的的对对象。象。public virtual Object Dequeue ()public virtual Obje
26、ct Dequeue ()EnqueueEnqueue将将对对象添加到象添加到QueueQueue的的结结尾尾处处。public virtual void Enqueue (Object obj)public virtual void Enqueue (Object obj)PeekPeek返回位于返回位于QueueQueue开始开始处处的的对对象但不将其移除。象但不将其移除。public virtual Object Peek ()public virtual Object Peek ()GetEnumeratorGetEnumerator返回循返回循环访问环访问QueueQueue的枚的枚
27、举举数。数。public virtual IEnumerator GetEnumerator public virtual IEnumerator GetEnumerator ()()ToArrayToArray将将QueueQueue元素复制到新数元素复制到新数组组。public virtual Object ToArray ()public virtual Object ToArray ()TrimToSizeTrimToSize将容量将容量设设置置为为QueueQueue中元素的中元素的实际实际数目。数目。public virtual void TrimToSize ()public v
28、irtual void TrimToSize ()嘴巢娶搔搅圆漳诈宦牛煞舒粤菩如榜纬碘昼利斑医焰脉墅惑粗宠妨汗庐霖第10章整理ppt第10章整理pptQueue示例/Queue/Queue示例示例using System;using System;using Systemusing System. .Collections;Collections;namespace Edunamespace Edu. .QhitQhit. .CodeCode. .CsharpCsharp. .ArrayArray public class QueueSample public class QueueSampl
29、e public static void Main() public static void Main() Queue myQ = new Queue(); Queue myQ = new Queue(); myQ myQ. .Enqueue(The);Enqueue(The); myQ myQ. .Enqueue(quick);Enqueue(quick); myQ myQ. .Enqueue(brown);Enqueue(brown); myQ myQ. .Enqueue(fox);Enqueue(fox); Console Console. .Write(Queue values:);W
30、rite(Queue values:); PrintValues(myQ); PrintValues(myQ); Console Console. .WriteLine(Dequeue)t0, myQWriteLine(Dequeue)t0, myQ. .Dequeue();Dequeue(); Console Console. .Write(Queue values:);Write(Queue values:); PrintValues(myQ); PrintValues(myQ); Console Console. .WriteLine(Dequeue)t0, myQWriteLine(D
31、equeue)t0, myQ. .Dequeue();Dequeue(); Console Console. .Write(Queue values:);Write(Queue values:); PrintValuesIe(myQ PrintValuesIe(myQ. .GetEnumerator();GetEnumerator(); Console Console. .WriteLine(Peek) t0, myQWriteLine(Peek) t0, myQ. .Peek();Peek(); Console.Write(Queue values:); PrintValuesIe(myQ.
32、GetEnumerator(); public static void PrintValues(IEnumerable myCollection) foreach (Object obj in myCollection) Console.Write( 0, obj); Console.WriteLine(); public static void PrintValuesIe(IEnumerator myIenum) while (myIenum.MoveNext() Console.Write(0,8, myIenum.Current); Console.WriteLine(); 溅梨垢翟照胞
33、苛颖虞堰颅纬疵蜜卯捏构蛛藉嗜焰赵片狂陋款奸创嫉润窝察第10章整理ppt第10章整理ppt排序列表集合-SortedListSortedList集合是键/值条目和一个ArrayList集合的组合体SortedList集合是按键排序通过键或索引来访问集合具体事例参见教材中箔瞳开询灼焰复绳宗赌梧铺佃锚搓士尸蒙抗侣憾阳张砖擒荧结迸乒舟孺背第10章整理ppt第10章整理ppt部分特殊集合介绍成成成成 员员员员 名名名名 称称称称说说说说 明明明明BitVector32BitVector32这这是一个是一个简单结简单结构,构,该结该结构以构以3232位内存存位内存存储储布布尔尔值值和小整和小整数。数。Bi
34、tVector32BitVector32只限于只限于3232位。因位。因为为它的精确用途,它的精确用途,BitVector32BitVector32的效率比的效率比BitArrayBitArray集合更高。集合更高。CollectionsUtilCollectionsUtil创创建忽略字符串大小写的集合。建忽略字符串大小写的集合。HybridDictionaryHybridDictionary在集合在集合较较小小时时,使用,使用ListDictionaryListDictionary来来实现实现IDictionaryIDictionary,然,然后当集合后当集合变变大大时时,切,切换换到到Ha
35、shtableHashtable。推荐用少于。推荐用少于1010个个元素的元素的ListDictionaryListDictionary。NameValueCollectionNameValueCollection表示可通表示可通过键过键或索引或索引访问访问的关的关联联StringString键键和和StringString值值的集合。的集合。OrderedDictionaryOrderedDictionary表示根据表示根据键键/ /索引排序的索引排序的键键/ /值对值对的集合。的集合。StringCollectionStringCollection表示字符串集合表示字符串集合StringDictionaryStringDictionary将将键键和和值值强强类类型化型化为为字符串而不是字符串而不是对对象来象来实现实现哈希表。哈希表。涡波檀清俄丛厌蔫纹耐釉铸唱噎获脱忿瓷荐九悲沼葡启偷掖缸坏农棕教辆第10章整理ppt第10章整理ppt总结数组列表、哈希表、堆栈集合的用法位数组、队列、排序列表集合操颈屁榴杯伶仁蕾劈卡坝毁决佣枣敝疼蔓磁歼稀珐嫡醛似衬陈家奸修反栈第10章整理ppt第10章整理ppt