hashtable是什么?

 我来答
xinli20
2012-05-30
知道答主
回答量:7
采纳率:0%
帮助的人:1.1万
展开全部
Hashtable 类基于 IDictionary 接口,因此该集合中的每一元素是键和值对。

Hashtable 由包含集合元素的存储桶组成。存储桶是 Hashtable 中各元素的虚拟子组,与大多数集合中进行的搜索和检索相比,它可令搜索和检索更简单、更快速。每一存储桶都与一个哈希代码关联,该哈希代码是使用哈希函数生成的并基于该元素的键。

哈希函数是基于键返回数值哈希代码的算法。键是正被存储的对象的某一属性的值。哈希函数必须始终为相同的键返回相同的哈希代码。一个哈希函数能够为两个不同的键生成相同的哈希代码,但从哈希表检索元素时,为每一唯一键生成唯一哈希代码的哈希函数将令性能更佳。

在 Hashtable 中用作元素的每一对象必须能够使用 Object.GetHashCode 方法的实现为其自身生成哈希代码。但是,还可以通过使用 Hashtable 构造函数(该构造函数将 IHashCodeProvider 实现作为其参数之一接受),为 Hashtable 中的所有元素指定一个哈希函数。

在将一个对象添加到 Hashtable 时,它被存储在存储桶中,该存储桶与匹配该对象的哈希代码的哈希代码关联。当在 Hashtable 内搜索一个值时,为该值生成哈希代码,并且搜索与该哈希代码关联的存储桶。

例如,一个字符串的哈希函数可以采用该字符串中每一字符的 ASCII 代码并它们添加到一起来生成一个哈希代码。字符串“picnic”将具有与字符串“basket”的哈希代码不同的哈希代码;因此,字符串“picnic”和“basket”将处于不同的存储桶中。与之相比,“stressed”和“desserts”将具有相同的哈希代码并将处于相同的存储桶中。

using System;
using System.Collections;
public class SamplesHashtable
{

public static void Main()
{

// Creates and initializes a new Hashtable.
Hashtable myHT = new Hashtable();
myHT.Add( "First ", "3 ");
myHT.Add( "Second ", "2 ");
myHT.Add( "Third ", "1 ");

// Displays the properties and values of the Hashtable.
Console.WriteLine( "myHT " );
Console.WriteLine( " Count: {0} ", myHT.Count );
Console.WriteLine(myHT[ "First "]);//***也可以这它!
Console.WriteLine( " Keys and Values: " );
PrintKeysAndValues( myHT );
}
public static void PrintKeysAndValues( Hashtable myList )
{
IDictionaryEnumerator myEnumerator = myList.GetEnumerator();
Console.WriteLine( "\t-KEY-\t-VALUE- " );
while ( myEnumerator.MoveNext() )
Console.WriteLine( "\t{0}:\t{1} ", myEnumerator.Key, myEnumerator.Value);

}
}
吻雨cc
2012-05-30 · TA获得超过138个赞
知道答主
回答量:74
采纳率:0%
帮助的人:36.2万
展开全部
哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合。Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的。而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻和获取工作更容易、更快速。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhuxinjun1982
2012-05-30 · 知道合伙人互联网行家
zhuxinjun1982
知道合伙人互联网行家
采纳数:2145 获赞数:8329
毕业于上海行健职业学院,大专学历;2007~2009在北大青鸟进修网络编程课目。现任网络主管,平时爱好上网。

向TA提问 私信TA
展开全部
在C#中是一个类。
这个类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
参考:http://baike.baidu.com/view/1641943.htm
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pengyuanqin12
2012-05-30 · 超过30用户采纳过TA的回答
知道答主
回答量:162
采纳率:0%
帮助的人:79万
展开全部
hashtable是个集合,通过键值对的方式来保存数据,它通过Add方法来添加Add(object key,object value);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全雁桃ld
2012-05-30
知道答主
回答量:41
采纳率:0%
帮助的人:17万
展开全部
哈希表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式