037字典集合类之Hashtable

目录

Hashtable 类

属性

方法

构造函数

示例:


Hashtable 类

https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.hashtable?view=netcore-3.1

    Hashtable类是一种键值对的集合,在内部,Hashtable类维护着一个哈希表。内部哈希表为插入到Hashtable的每个键进行哈希编码,在后续的检索操作中,通过哈希编码可以遍历所有元素。这种方法为搜寻操作提供了较佳的性能。
    在.NET中,Hashtable类中存储的每个元素都是一个存储在DictionaryEntry对象中的键/值对。键不能为空引用Nothing,但值可以。键和值可以是任何对象,例如字符串,自定义类等。当插入键/值对到哈希表中时,Hashtable使用每个键所引用对象的GetHashCode()方法,获取一个哈希编码,存人Hashtable中。

属性

comparer

获取或设置要用于 IComparer 的 Hashtable

Count

获取包含在 Hashtable 中的键/值对的数目。

EqualityComparer

获取要用于 IEqualityComparer 的 Hashtable

hcp

获取或设置可分配哈希代码的对象。

IsFixedSize

获取一个值,该值指示 Hashtable 是否具有固定大小。

IsReadOnly

获取一个值,该值指示 Hashtable 是否为只读。

Item[Object]

获取或设置与指定的键关联的值。

Keys

获取包含 ICollection 中的键的 Hashtable

Values

获取一个 ICollection,它包含 Hashtable 中的值。

方法

Add(Object, Object)

将带有指定键和值的元素添加到 Hashtable 中。

Clear()

从 Hashtable 中移除所有元素。

Clone()

创建 Hashtable 的浅表副本。

Contains(Object)

确定 Hashtable 是否包含特定键。

ContainsKey(Object)

确定 Hashtable 是否包含特定键。

ContainsValue(Object)

确定 Hashtable 是否包含特定值。

CopyTo(Array, Int32)

将 Hashtable 元素复制到一维 Array 实例中的指定索引位置。

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetType()

获取当前实例的 Type。(继承自 Object)

KeyEquals(Object, Object)

将特定 Object 与 Hashtable 中的特定键进行比较。

MemberwiseClone()

创建当前 Object 的浅表副本。(继承自 Object)

Remove(Object)

从 Hashtable 中移除包含指定键的元素。

构造函数

Hashtable()

使用默认的初始容量、加载因子、哈希代码提供程序和比较器来初始化 Hashtable 类的新的空实例。

Hashtable(IDictionary)

通过将指定字典中的元素复制到新的 Hashtable 对象中,初始化 Hashtable 类的一个新实例。 新 Hashtable 对象的初始容量等于复制的元素数,并且使用默认的加载因子、哈希代码提供程序和比较器。

Hashtable(Int32)

使用指定的初始容量、默认加载因子、默认哈希代码提供程序和默认比较器来初始化 Hashtable 类的新的空实例。

Hashtable(Int32, Single)

使用指定的初始容量、指定的加载因子、默认的哈希代码提供程序和默认比较器来初始化 Hashtable 类的新的空实例。

    将某个元素添加到Hashtable时,将根据键的哈希代码将该元素放入存储桶中。该键的后续查找将使用键的哈希代码在一个特定存储桶中搜索,这将大大减少为查找一个元素所需的键比较的次数。
    Hashtable的加载因子确定元素与存储桶的最大比率。加载因子越小,平均查找速度越快,但消耗的内存也越大。默认的加载因子为1.0,通常提供速度和大小之间的最佳平衡。

示例:

Module Module1
    Private Sub PrintIndexKeysAndValues(ByVal ht As Hashtable)
        Dim i As Integer
        Console.WriteLine(vbTab + "-INDEX-" + vbTab + "-KEY-" & vbTab & "-VALUE-")
        Dim de As DictionaryEntry
        For Each de In ht
            Console.WriteLine(vbTab & "[{0}]:" & vbTab & "{1}" & vbTab & "{2}", i, de.Key, de.Value)
            i = i + 1
        Next

        Console.WriteLine()
    End Sub
    Sub Main()
        Dim myHash As New Hashtable
        myHash.Add(0, "Zero")
        myHash.Add(1, "One")
        myHash.Add(2, "Two")
        myHash.Add(3, "Three")
        myHash.Add(4, "Four")

        Console.WriteLine("哈希表的内容:")
        PrintIndexKeysAndValues(myHash)

        Dim myKey As Integer = 2
        Console.Write("搜索键{0}", myKey)
        If myHash.ContainsKey(myKey) Then
            Console.WriteLine(",该键的值为{0}", myHash(myKey))
        Else
            Console.WriteLine(",该键不存在")
        End If

        myKey = 6
        Console.Write("搜索键{0}", myKey)
        If myHash.ContainsKey(myKey) Then
            Console.WriteLine(",该键的值为{0}", myHash(myKey))
        Else
            Console.WriteLine(",该键不存在")
        End If

        Dim myValue As String = "Three"
        Console.Write("搜索值{0}", myValue)
        If myHash.ContainsValue(myValue) Then
            Dim strID As String '要查找的key
            Dim tmp As DictionaryEntry
            For Each jzd In myHash
                If myValue = jzd.Value Then strID = jzd.Key
            Next

            Console.WriteLine(",该值的键{0}", strID)
        Else
            Console.WriteLine(",该值不存在")
        End If

        Console.Read()
    End Sub

End Module

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值