什么是哈希表,简单明了的说一下他的功能,用途,怎么使用?谢谢 !一会儿结分
解决方案 »
- C#属性(字段)问题,为什么要用get,set,直接用public string Name不行吗
- 一个小问题,有是个大问题,freetextbox3要如何装呢,我用的是vs2003 1.1版本,谢谢大家见来看看
- 程序出错 急啊 麻烦大伙帮忙解决一下
- 学习时遇到几个问题!
- vs2003设计网站许多htm标记不支持,有解决办法吗?
- 多维数组的问题.
- bytes() 转换为 string 再转换回来怎么才能一样呢 ? 本人出50分在线等待解决问题!
- 总共100分!如何屏蔽“刷新”和“回退”功能;如何让一行内容固定在页面的上端?
- 初学ASP.NET:请问怎样向数据库中添加记录(用代码在程序中实现)?
- 如何将源代码编译成DLL?
- 再问一个小问题
- 客户端验证问题
using System.Collections;namespace ConsoleApplication1
{
/// <summary>
/// DictionaryDemo 的摘要说明。
/// </summary>
public class DictionaryDemo
{
public DictionaryDemo() {} static public void Test1() {
// 创建一个哈希表(Hashtable)
Hashtable ht = new Hashtable();
// 添加一些 (key,value) 组合
ht.Add("test1", "this is a bag");
ht.Add("test2", new int[] {1, 2}); string s = (string) ht["test1"];
Console.WriteLine(s);
int[] arr = (int[]) ht["test2"];
foreach (int i in arr) {
Console.WriteLine(i);
}
// 判断是否包含某个 key
Console.WriteLine(ht.ContainsKey("test2"));
// 判断是否包含某个 value
Console.WriteLine(ht.ContainsValue("this is a bag")); /* key 可以用任意类型,但这些类型必须重写了 System.Object.GetHashCode
* 以及 System.Object.Equals
* 所有的基类型都实现了这些,可以安全的用作 key.
*
* System.Object.GetHashCode() 方法返回一个数值, 这个数值是 CLR 内部用来
* 识别一个对象的。如果两个 hash code 相同,则表明他们指向同样的对象。
*/
object a = new ArrayList();
object b = a;
if (a.GetHashCode() == b.GetHashCode()) {
Console.WriteLine("a.GetHashCode()==b.GetHashCode()=" + a.GetHashCode());
}
ht.Add("a", 1);
/* 如果向 Hashtable 中添加已有的键,则会抛出一个 ArgumentException 异常。
* 如下所示:*/
//ht.Add("a", 2); // Hashtable 提供了 Keys, Values 集合。这两个集合都是 ICollection 类型的
Console.WriteLine("keys in hash table:");
foreach (string key in ht.Keys) {
Console.WriteLine(key);
} /* Hashtable 继承自 IEnumerable, 所以可以用 IEnumerable.GetEnumerator() 方法
* 获取 enumerator. enumerator 用 System.Collections.DictionaryEntry 类型
* 来处理集合的值。这种类型允许你访问相关的 key 和 value. 例: */
foreach (DictionaryEntry entry in ht) {
Console.WriteLine(entry.Key + ":" + entry.Value);
} /* 也可以通过获得一个 IDictionaryEnumerator 类型的 enumerator 类枚举。
* IDictionaryEnumerator 除了实现 IEnumerator 的所有方法外,还增加了
* Key, Value, DictionaryValue 三个属性,以方便访问集合的值。例:
*/
IDictionaryEnumerator e = ht.GetEnumerator();
while (e.MoveNext()) {
Console.WriteLine(e.Key + ":" + e.Value);
} Console.ReadLine();
}
}
}
在.NET中可以理解成一个线性表,里面存放的是一个对应关系,一般是键值和Value值的对应