首页 > 其他分享 >【原创】在 VBScript 中使用哈希表(Hashtable)

【原创】在 VBScript 中使用哈希表(Hashtable)

时间:2023-07-24 10:22:27浏览次数:107  
标签:Set VBScript System Echo Collections Hashtable 哈希 oHT

环境要求

  • Windows XP 及以上。
  • Windows 10Windows 11Windows 功能 中勾选 .NET Framework 3.5 (包括 .NET 2.0 和 3.0)

使用

创建一个 Hashtable 对象:

Set oHT = CreateObject("System.Collections.Hashtable")

Count 属性:返回表中键值对的数量

Set oHT = CreateObject("System.Collections.Hashtable")
WSH.Echo oHT.Count()
0

IsFixedSize 属性:哈希表是否具有固定大小

由于 VBS 无法调用构造函数,故只能创建动态大小的哈希表。

故会固定返回 False

Set oHT = CreateObject("System.Collections.Hashtable")
WSH.Echo oHT.IsFixedSize()
0

IsReadOnly 属性:哈希表是否只读

由于 VBS 无法调用构造函数,故只能创建可读写的哈希表。

故会固定返回 False

Set oHT = CreateObject("System.Collections.Hashtable")
WSH.Echo oHT.IsReadOnly()
0

IsSynchronized 属性:哈希表是否线程安全

由于 VBS 为单线程,该属性无意义。

会固定返回 False

Set oHT = CreateObject("System.Collections.Hashtable")
WSH.Echo oHT.IsSynchronized()
0

Item 属性:表示指定键对应的键值对

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Item("key") = "value"
WSH.Echo oHT.Item("key")
value
Set oHT.Item("oRE") = New RegExp
WSH.Echo TypeName(oHT.Item("oRE"))
IRegExp2

Default 默认属性:表示指定键对应的键值对

Item 属性。

Set oHT = CreateObject("System.Collections.Hashtable")
oHT("key") = "value"
WSH.Echo oHT("key")
value
Set oHT("oRE") = New RegExp
WSH.Echo TypeName(oHT("oRE"))
IRegExp2

Add 方法:新添键值对

若键已经存在会抛出错误。

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "key", "value"
WSH.Echo oHT("key")
value
Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "duplicate", 0
On Error Resume Next
oHT.Add "duplicate", 1
WSH.Echo Err.Number = 0
Err.Clear
0

Clear 方法:移除表内所有键值对

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "key", "value"
oHT.Clear
WSH.Echo oHT.Count
0

Clone 方法:创建哈希表的副本

Set oHT = CreateObject("System.Collections.Hashtable")
Set oHT2 = oHT
Set oHT3 = oHT.Clone
oHT.Add "key", "value"
WSH.Echo oHT.Count, oHT2.Count, oHT3.Count
1 1 0

Contains 方法:判断哈希表是否包含指定键

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "key", "value"
WSH.Echo oHT.Contains("key"), oHT.Contains("other")
-1 0

ContainsKey 方法:判断哈希表是否包含指定键

Contains 方法。

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "key", "value"
WSH.Echo oHT.ContainsKey("key"), oHT.ContainsKey("other")
-1 0

ContainsValue 方法:判断哈希表是否包含指定值

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "key", "value"
WSH.Echo oHT.ContainsValue("value"), oHT.ContainsValue("other")
-1 0

Equals 方法:判断是否为同一哈希表

Set oHT = CreateObject("System.Collections.Hashtable")
Set oHT2 = oHT
Set oHT3 = oHT.Clone
WSH.Echo oHT.Equals(oHT2), oHT.Equals(oHT3)
-1 0

GetHashCode 方法:返回哈希表的哈希

Set oHT = CreateObject("System.Collections.Hashtable")
Set oHT2 = oHT
Set oHT3 = oHT.Clone
WSH.Echo oHT.GetHashCode, oHT2.GetHashCode, oHT3.GetHashCode
54267293 54267293 18643596

Remove 方法:从哈希表中移除指定键对应的键值对

若键不存在,则什么也不做。

Set oHT = CreateObject("System.Collections.Hashtable")
oHT.Add "key", "value"
oHT.Remove "key"
oHT.Remove "nothing"
WSH.Echo oHT.Count
0

ToString 方法:返回哈希表的类型名

Set oHT = CreateObject("System.Collections.Hashtable")
WSH.Echo oHT.ToString(), TypeName(oHT)
System.Collections.Hashtable Hashtable

参考

标签:Set,VBScript,System,Echo,Collections,Hashtable,哈希,oHT
From: https://www.cnblogs.com/OldLiu/p/VBScript_Using_NET_Hashtable.html

相关文章

  • 利用Pollard rho进行哈希碰撞(Polladr rho method to fing collision)
    项目实现:implementtheRhomethodofreducedSM3实验内容:该实验设计f函数为\(f:H(x)\),即\(W_i=H(W_{i-1})\)(除第一次输入信息\(m\)外,f函数输入输出均为256bit)Polladrrhomethodtofingcollision:利用了生日悖论,使碰撞的复杂度降到\(O(\sqrtn)\)级别,同时能有效避免......
  • 3 哈希表
    #哈希表##1哈希表理论基础###1.1什么是哈希表>哈希表(hashtable):根据关键码的值而直接进行访问的数据结构。![img](https://img2023.cnblogs.com/blog/3237570/202307/3237570-20230719105359176-1676757602.png)-hash表解决问题:快速判断一个元素是否出现集合......
  • 字符串哈希
    题目描述给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数l1,r1,l2,r2,请你判断[l1,r1]和[l2,r2]这两个区间所包含的字符串子串是否完全相同。字符串中只包含大小写英文字母和数字。输入格式第一行包含整数n和m,表示字符串长度和询问次数。第二行包含一个长度为......
  • 4、C#中的HashTable和Dictionary之间的区别
    HashTable和Dictionary都是用于存储数据的数据结构的类型。这两个数据结构都将存储的数据保存为键值对。根据这些关键特征之间的区别,我们可以区分HashTable和Dictionary,如下所示: ......
  • 哈希数据结构
    参考链接:https://blog.csdn.net/CRMEB/article/details/1208206821.哈希表哈希表,即散列表(Hashtable),是根据keyvalue而直接进行访问的数据结构。也就是说,它通过把keyvalue映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。......
  • docker分布式存储之哈希槽3主3从redis集群配置+主从扩容缩容
    创建开启六台redis容器systemctlrestartdockerdockerpullredis:6.0.8根据需求下载redis的镜像版本配置3主3从开启六台redis容器分别用node-1~node-6来区分dockerrun-d--nameredis-node-1--nethost--privileged=true-v/tmp/redis/share/redis-node......
  • Perl学习笔记2_标量数组哈希
    1.概述Perl是弱类型语言,变量不需要指定类型,解释器根据上下文自动选择匹配类型.Perl有三个基本的数据类型:标量($),数组(@),哈希(%).2.标量,scalar标量变量以$标记.my$a=123;#数字my$b="123";#字符串my$c=0x1F;#16进制my$d=047;#8进制my$e......
  • LeetCode 519. Random Flip Matrix 哈希Map
    Thereisanmxnbinarygridmatrixwithallthevaluesset0initially.Designanalgorithmtorandomlypickanindex(i,j)wherematrix[i][j]==0andflipsitto1.Alltheindices(i,j)wherematrix[i][j]==0shouldbeequallylikelytobereturne......
  • java哈希取模例子
    Java哈希取模示例流程概述在介绍如何实现Java哈希取模例子之前,我们需要了解一下整个流程。哈希取模是一种常见的数据处理技术,用于将数据分散到固定大小的哈希表或数组中。下面是实现Java哈希取模的基本流程:创建一个哈希表或数组,用于存储数据。将输入的数据进行哈希运算,得到一......
  • .NET Core应用程序每次启动后使用string.GetHashCode()方法获取到的哈希值(hash)不相
    前言如标题所述,在ASP.NETCore应用程序中,使用string.GetHashCode()方法去获取字符串的哈希值,但每次重启这个ASP.NETCore应用程序之后,同样的字符串的哈希值(hash)但不相同了。这是什么意思呢?具体的应用场景是这样的:项目中有一张表的某个字段保存了类似URL这样的字符串,这张表......