C#程序设计 第5章泛型
C# 程序设计 第5章 泛型
集合 HashTable 掌握ArrayList集合类的使用及操作 掌握HashTable(哈希表)的使用及操作 2
2 集合 ★ HashTable 掌握ArrayList集合类的使用及操作 掌握HashTable(哈希表)的使用及操作
为什么使用HashTable ArrayListi通过索引获取对象 Student stu1 =(Student)Students[0]; ■ 索引器通过关键字获取对象 Students[张三"]门.SayHi(0; 问题 能否象索引器那样通过关键字获取该对象呢? 动态可维护长度 C提供一种集合 可通过关键字检索 HashTable
3 ▪ ArrayList通过索引获取对象 为什么使用HashTable 能否象索引器那样通过关键字获取该对象呢? 动态可维护长度 可通过关键字检索 C#提供一种集合 HashTable Students[“张三"].SayHi(); Student stu1 = (Student)Students[0]; ▪ 索引器通过关键字获取对象
什么是HashTable 每个元素都是一个键值对,元素类型为DictionaryEntry ■HashTable通常称为哈希表 实例化的方式同ArrayList 根据键(Key)可以查找到相应的值(Vlue) ArrayList 键值必须唯一 键和值可以是任意类型 HashTable object 键 Key Value 值 object Key Value object 索引 Key Value object 键和值一一对应 Key Value object Key Value 4
4 什么是HashTable ▪ 每个元素都是一个键值对,元素类型为DictionaryEntry ▪ HashTable 通常称为哈希表 ▪ 根据键(Key)可以查找到相应的值(Value) object object object object object 0 1 2 3 . ArrayList 实例化的方式同ArrayList Key Value Key Value Key Value Key Value Key Value HashTable 键 值 键和值一一对应 索引 键值必须唯一 键和值可以是任意类型
使用哈希表 给哈希表添加元素 students.Add zhangsan.Name zhangsan) 添加元素 Key Value 获取哈希表的元素 Student stu2=(Student)students["张三": stu2.SayHi(); 通过key获取元素 需要类型转换 删除哈希表的元素 students Remove(张三")方 通过key删除元素 演示:MySchool
5 使用哈希表 students.Add(zhangsan.Name , zhangsan); 添加元素 Key Value . Student stu2 = (Student)students[“张三"]; stu2.SayHi(); . 通过key获取元素 students.Remove(“张三"); . 通过key删除元素 ▪ 给哈希表添加元素 ▪ 获取哈希表的元素 ▪ 删除哈希表的元素 需要类型转换 演示:MySchool
哈希表的遍历 问题 如何遍历一个哈希表? 不能遍历整个对象,而 Keys: 获取哈希表中键的集合 是遍历Values Values:获取哈希表中值的集合 foreach (Object stuo in students.Values) Key Value { Student stu =(Student)stuo; Key Value Console.WriteLine(stu.Name); Key Value foreach(string name in students.Keys) Key Value 可以遍历Keys Console.WriteLine(name), Key Value foreach(DictionaryEntry dicEntry in students) Values I键dicEntry.Key (Student )dicEntry.Value 6
6 哈希表的遍历 foreach (Object stuo in students.Values) { Student stu = (Student)stuo; Console.WriteLine(stu.Name); } 如何遍历一个哈希表? Key Value Key Value Key Value Key Value Key Value Values foreach (string name in students.Keys) { Console.WriteLine(name); } 可以遍历Keys Keys: 获取哈希表中键的集合 Values: 获取哈希表中值的集合 不能遍历整个对象,而 是遍历Values foreach (DictionaryEntry dicEntry in students) //键 dicEntry .Key //值 (Student )dicEntry.Value
哈希表中元素的查找 Contains方法 Key:要在哈希表中定位的键 bool Contains object key); 返回值:true,false ContainsValue方法 Value:在哈希表中定位的值 bool ContainsValue object value 返回值:true,false
7 哈希表中元素的查找 bool Contains ( object key); Key:要在哈希表中定位的键 bool ContainsValue ( object value); ▪ Contains方法 ▪ ContainsValue方法 返回值:true,false Value:在哈希表中定位的值 返回值:true,false
关于哈希表 常用属性 Count: 获取包含在哈希表中的键值对的数目。 Keys:获取包含在哈希表中的键的集合 ■Values:获取包含在哈希表中的值的集合 常用方法 ■Add:将指定键和值的元素添加到哈希表中 ■Remove:从哈希表中移除带有指定键的元素 ■Clear: 清空哈希表 ContainsValue:检索哈希表中是否存在指定的值元素 ContainsKey:检索哈希表中是否存在指定的键元素 8
8 关于哈希表 常用属性 ▪ Count:获取包含在哈希表中的键值对的数目。 ▪ Keys:获取包含在哈希表中的键的集合 ▪ Values:获取包含在哈希表中的值的集合 常用方法 ▪ Add:将指定键和值的元素添加到哈希表中 ▪ Remove:从哈希表中移除带有指定键的元素 ▪ Clear:清空哈希表 ▪ ContainsValue:检索哈希表中是否存在指定的值元素 ▪ ContainsKey:检索哈希表中是否存在指定的键元素
关于哈希表 注意 ■哈希表中已存在某个键时,不能再添加相同的键 ■需要修改哈希表中的元素值时,通过键操作即可。 ·若键或值的类型不一致时,循环遍历得到时候要注意适 当的拆箱操作 哈希表的值如果是引用类型的对象时,使用前要进行类 型转换
9 关于哈希表 注意 ▪ 哈希表中已存在某个键时,不能再添加相同的键 ▪ 需要修改哈希表中的元素值时,通过键操作即可。 ▪ 若键或值的类型不一致时,循环遍历得到时候要注意适 当的拆箱操作 ▪ 哈希表的值如果是引用类型的对象时,使用前要进行类 型转换
SortedList 属性 说明 Capacity 获取或设置SortedList的容量 Count 获取包含在SortedList长T,V>中的键/值对的数目 Keys 获取包含SortedList-长T,V>中的键的集合 Values 获取包含SortedList长T,V>中的值的集合 方法 说明 Add 将带有指定键和值的元素添加到SortedList-长T,V>中 Clear 从SortedList长T,V>中移除所有元素 ContainsKey 确定SortedList是否包含特定键 Contains Value 确定SortedList长T,V>是否包含特定值 GetEnumerator 返回一个循环访问SortedList长T,V>的枚举器 IndexOfKey 在整个SortedList中搜索指定键并返回从零开始的索引 IndexOfValue 在整个SortedList长T,V>中搜索指定的值,并返回第一个匹配项的从 零开始的索引 Remove 从SortedList长T,V>中移除带有指定键的元素 RemoveAt 移除SortedList长T,V>的指定索引处的元素 10
10 SortedList 属性 说明 Capacity 获取或设置SortedList的容量 Count 获取包含在SortedList 中的键/值对的数目 Keys 获取包含SortedList 中的键的集合 Values 获取包含SortedList 中的值的集合 方法 说明 Add 将带有指定键和值的元素添加到SortedList 中 Clear 从SortedList 中移除所有元素 ContainsKey 确定SortedList 是否包含特定键 ContainsValue 确定SortedList 是否包含特定值 GetEnumerator 返回一个循环访问SortedList 的枚举器 IndexOfKey 在整个SortedList 中搜索指定键并返回从零开始的索引 IndexOfValue 在整个SortedList 中搜索指定的值,并返回第一个匹配项的从 零开始的索引 Remove 从SortedList 中移除带有指定键的元素 RemoveAt 移除SortedList 的指定索引处的元素