Hashtable的遍历(DictionaryEntry)
定义可设置或检索的字典键/值对。
命名空间:System.Collections
程序集:mscorlib(在 mscorlib.dll 中)
foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。
C# 语言中的 foreach 语句(在 Visual C++ 中为 for each,在 Visual Basic 中为 For Each)需要集合中每个元素的类型。由于 IDictionary 的每个元素都是一个键/值对,因此元素类型既不是键的类型,也不是值的类型。而是 DictionaryEntry 类型。
下面的示例演示如何使用 DictionaryEntry 来循环访问 Hashtable 对象。
using System;
using System.Collections;class Example
{public static void Main(){// Create a new hash table.//Hashtable openWith = new Hashtable();// Add some elements to the hash table. There are no // duplicate keys, but some of the values are duplicates.openWith.Add("txt", "notepad.exe");openWith.Add("bmp", "paint.exe");openWith.Add("dib", "paint.exe");openWith.Add("rtf", "wordpad.exe");// When you use foreach to enumerate hash table elements,// the elements are retrieved as KeyValuePair objects.Console.WriteLine();foreach (DictionaryEntry de in openWith){Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);}}
}
另一种方法:
System.Collections.IDictionaryEnumerator ht = ht.GetEnumerator();
while (ht.MoveNext())
{ht.Key.ToString();//键ht.Value.ToString();//值 //这里已经取到当前的键、值对了,怎么输出和存储就看自己的了
}
Hashtable 类
表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。
每个元素是一个存储在 DictionaryEntry 对象中的键/值对。键不能为空引用(Visual Basic 中为 Nothing),但值可以。
用作 Hashtable 中的键的对象必须实现或继承 Object.GetHashCode 和 Object.Equals 方法。如果键相等性只是引用相等性,这些方法的继承实现将满足需要。此外,如果该键存在于 Hashtable 中,那么当使用相同参数调用这些方法时,这些方法必须生成相同的结果。只要键对象用作 Hashtable 中的键,它们就必须是永远不变的。
当把某个元素添加到 Hashtable 时,将根据键的哈希代码将该元素放入存储桶中。该键的后续查找将使用键的哈希代码只在一个特定存储桶中搜索,这将大大减少为查找一个元素所需的键比较的次数。
Hashtable 的加载因子确定元素与存储桶的最大比率。加载因子越小,平均查找速度越快,但消耗的内存也增加。默认的加载因子 1.0 通常提供速度和大小之间的最佳平衡。当创建 Hashtable 时,也可以指定其他加载因子。
当向 Hashtable 添加元素时,Hashtable 的实际加载因子将增加。当实际加载因子达到此加载因子时,Hashtable 中存储桶的数目自动增加到大于当前 Hashtable 存储桶数两倍的最小质数。
Hashtable 中的每个键对象必须提供其自己的哈希函数,可通过调用 GetHash 访问该函数。但是,可将任何实现 IHashCodeProvider 的对象传递到 Hashtable 构造函数,而且该哈希函数用于该表中的所有对象。
总之:DictionaryEntry就是键值对
Key是键
Value是值
Hashtable 内的每一组对象就是一个DictionaryEntry
例如我们要循环hashtable
foreach (DictionaryEntry de in myHashtable) {...}
Hashtable就是一个DictionaryEntry的集合
在一个Hashtable中
Key的值是不可以重复的,必须是唯一的,但Value的值可以是重复的
在查询时,Key担当索引的功能
http://apps.hi.baidu.com/share/detail/34942799
http://www.cnblogs.com/windteam/archive/2011/07/04/2097229.html
Hashtable的遍历(DictionaryEntry)相关推荐
- C# hashTable的遍历【2种方法】与排序【3种方法】
private void Form1_Load(object sender, EventArgs e) { Hashtable ht = new Hashtable(); ht.Add("j ...
- 学用 ASP.Net 之 System.Collections.Hashtable 类与 DictionaryEntry 结构
DictionaryEntry 是包含 Key / Value 一对值的简单结构; Hashtable(哈希表)是一组 Key / Value 的集合, 准确地讲是一组 DictionaryEntry ...
- Hashtable的遍历
foreach( DictionaryEntry de in hashTable) { console.WriteLine("Key -- {0}; Value --{1}.", ...
- Hashtable多线程遍历问题
If a thread-safe implementation is not needed, it is recommended to use HashMap in place of code Has ...
- java Hashtable的遍历方法
今天遇到用hashtable取值时发现取得的值是排过序的,而我并希望它排序输出,因为它是倒序输出,查一下原因是因为我用下面的第一种方法取值的,将hashtable的值排序输出了,这个真是我疏忽的问题, ...
- Hashtable:仅有两列的表
Hashtable集合和ArrayList.Stack和Queue都不一样,该集合可用看作是一个仅有两列的表格,第一列是键,存放的是唯一不可重复的值.第二列是值,随便放什么都可以.由于Hashtabl ...
- 哈希表(HashTable)探究(转)
HashTable 通常称为哈希表,它表示键(key)/值(value)对的集合. 1.HashTable 的构造函数: HashTable() //初始化为0个元素的空实例 ...
- 字典实体类:DictionaryEntry类
DictionaryEntry类是一个字典集合,主要包括的内容是键/值对.这样的组合方式能够方便地定位数据,当中的"键"具备唯一性,类似于数据库中的"id",一 ...
- C#中Hashtable
哈希表Hashtable是一个重要的集合类型,下面我来对他的基本用法做个小小的总结. using System.Collections; //使用Hashtable时,必须引入这个命名空间 1.Has ...
最新文章
- 如何利用 C# 爬取带 Token 验证的网站数据?
- 今天收到IBM cat 测试
- 高通 MSM8K bootloader : SBL1 .
- 100条常用写作谚语(5)(6)(7)(8)
- 基于javaweb+jsp+mysql的高校家教管理系统
- directsound之播放pcm
- JSP基础之九九乘法表(利用JSP脚本段制作一张九九乘法表)
- Axure RP从入门到精通(二十)鼠标指针函数
- java运行环境简称_java程序的运行环境简称为什么?
- pdfobject div中预览pdf
- 系统性能测试实施流程
- 备份计算机软件,如何备份电脑里面的软件
- zoj 1104 Leaps Tall Buildings(超人不会飞- -。。)
- 程序员路在何方的辛苦工作
- hadoop错误:java.io.IOException: There appears to be a gap in the edit log. We expected txid 1
- 关于送货单的格式要求?
- dw css定位,css关于position属性的用法详解(绝对定位和相对定位的混淆)
- 【结绳4.0】添加权限
- 权威公布岑巩马家寨为一代佳人陈圆圆归隐地
- SAP与三大财务报表之 “现金流量表”
热门文章
- JQuery 复制粘贴上传图片插件(textarea 和 tinyMCE)
- 肝癌花了70万,但我不建议你买保险
- vscode 底部状态栏调试按钮不见了
- 动手学深度学习:7.8 Adam算法
- java代码ping服务IP工具类(Windows,Linux环境)
- 【创新实训8】手势理解功能与实际应用整合
- 机关办事必备!简单两步掌握一键卡复印技巧
- “Ubuntu 20.04 LTS _Focal Fossa - Release amd64 (20200423)” 的盘片插入驱动器“/cdrom/”再按「回车」键
- 吴建平院士:互联网视频技术在疫情防控中的重要作用
- vivo入驻华为测试鸿蒙,VIVO联动华为?官方宣传图出现华为智联,为鸿蒙合作埋下伏笔...