hashtable是什么?

发布网友 发布时间:2022-03-29 14:59

我来回答

5个回答

热心网友 时间:2022-03-29 16:29

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);

}
}

热心网友 时间:2022-03-29 17:47

哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合。Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的。而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻和获取工作更容易、更快速。

热心网友 时间:2022-03-29 19:21

在C#中是一个类。
这个类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
参考:http://ke.baidu.com/view/11943.htm

热心网友 时间:2022-03-29 21:13

hashtable是个集合,通过键值对的方式来保存数据,它通过Add方法来添加Add(object key,object value);

热心网友 时间:2022-03-29 23:21

哈希表
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com