当前位置:文档之家› VB中的Dictionary对象介绍+小结

VB中的Dictionary对象介绍+小结

VBA中Dictionary对象使用小结Dim dict' 创建DictionarySet dict = CreateObject("Scripting.Dictionary")' 增加项目dict.Add "A", 300dict.Add "B", 400dict.Add "C", 500' 统计项目数n = dict.Count' 删除项目dict.Remove ("A")' 判断字典中是否包含关键字dict.exists ("B")' 取关键字对应的值,注意在使用前需要判断是否存在key,否则dict中会多出一条记录Value = dict.Item("B")' 修改关键字对应的值,如不存在则创建新的项目dict.Item("B") = 1000dict.Item("D") = 800' 对字典进行循环k = dict.keysv = dict.ItemsFor i = 0 To dict.Count - 1key = k(i)Value = v(i)MsgBox key & ValueNext' 删除所有项目dict.Removeall实例:Sub 宏1()Set dic = CreateObject("Scripting.Dictionary") '字典For i = 1 To 10000If Not i Like "*4*" Thendic.Add i, "" '如果不包含“1”End IfNextRange("a2").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys) '从A2单元开始向下放置End SubVB中的Dictionary对象核心归纳:1、更换键名,用obj.key("xx")="newxx"2、更换键值或访问指定键:1、重设键值:obj.item("xx")="newxx",2、取得键值:response.write obj.item("xx")=" ,如果obj.item("xx")="newxx" 中的KEY键“xx”未设定时,会在对象的后面增加一个键值对。

3、获得条目数:obj.count (从1开始)4、增加键值对:obj.add key,value5、移除键:obj.remove("key") , obj.removeall()6、判定键是否存在:obj.Exists("key")7、遍历:先把键和值各自赋给一个变量,构成一维数组,再用FOR遍历a=d.keysb=d.Items'For x=0 to d.count-1 '或从上到下遍历,For x=d.Count-1 To 0 Step -1 '从下到上遍历wan : abc zuo : 10254Response.write a(x)Response.write " : "Response.write b(x)Response.write "<br />"Next8、用pareMode = 0(二进制,默认,大小写敏感)或pareMode = 1(文本,大小写不区分,但不会后面的覆盖前面)来指定比较模式,=================================================================简单的理解:Scripting.Dictionary对象相当于二维数组,但比二维数组更灵活,可以随时操纵其中某个键,而二维数组还要遍历。

以下用一个简单的案例来帮助理解:set d=server.CreateObject("scripting.dictionary")d.add "zuo",21312d.add "wan","abc"response.write d.Count '计数,从1开始Response.write "<br />"a=d.keysb=d.Items'For x=0 to d.count-1 '或从上到下遍历,For x=d.Count-1 To 0 Step -1 '从下到上遍历wan : abc zuo : 10254Response.write a(x)Response.write " : "Response.write b(x)Response.write "<br />"NextResponse.write d.item("wan") '输出指定的key值Response.write "<br />"d.item("wan")="新值"Response.write d.item("wan") '输出指定的key值Response.write "<br />"d.key("wan")="newwan" '更改键名'wan键名更改了,是否还有值?Response.write "执行d.key(""wan"")=""newwan""后再输出wan"Response.write d.item("wan") '无值输出。

但要注意:d.item("wan") 不存在,可用d.Exists("wan")检测。

Response.write "<br />输出新名称newwan的值:"Response.write d.item("newwan")Response.write "<br />"Response.write d.Exists("newwan") '分析是否存在这个键True。

d.Remove("newwan")Response.write "<br />"Response.write d.Exists("wan") '分析是否存在这个键True。

Response.write "<br />"For x=d.Count-1 To 0 Step -1 '从下到上遍历wan : abc zuo : 10254Response.write a(x)Response.write " : "Response.write b(x)Response.write "<br />"Next详细:许多Microsoft的编程语言,如Visual Basic、VBScript和Jscript,都提供集合(collection)。

可以把集合想象为数组,可以使用其中内建的函数完成存储和操纵数据等基本任务。

无须担心数据是在哪些行列,而是使用唯一的键进行访问。

VBScript和Jscript都提供类似的对象,通称Scripting.Dictionary对象或Dictionary对象。

它类似于二维数组,把键和相关条目的数据存放在一起。

然而真正的面向对象的方法,不应直接访问数据条目,必须使用Dictionary对象支持的方法和属性来实现。

创建和使用Dictionary对象创建一个Dictionary对象的示例如下:‘In VBScript:Dim objMyDataSet objMyData = Server.CreateObject(“Scripting.Dictionary”)//In Jscript:var objMyData = Server.CreateObject(…Scripting.Dictionary‟);<!-- Server-Side with an OBJECT element --><OBJECT RUNAT=”SERVER” SCOPE=”PAGE” ID=”objMyData”PROGID=”Scripting.Dictionary”></OBJECT>Dictionary对象还可用于客户端的IE中。

1.Dictionary对象的成员概要当增加一个键/条目对时,如果该键已存在;或者删除一个键/条目对时,该关键字/条目对不存在,或改变已包含数据的Dictionary对象的CompareMode,都将产生错误。

属性说明CompareMode (仅用于VBScript)设定或返回键的字符串比较模式Count 只读。

返回Dictionary里的键/条目对的数量---从1开始,而不像数组从0开始计数Item(key) 设定或返回指定的键的值Key(key) 设定键名值方法说明Add(key,item) 增加键/条目对到DictionaryExists(key) 如果指定的键存在,返回True,否则返回FalseItems() 返回一个包含Dictionary对象中所有条目的数组Keys() 返回一个包含Dictionary对象中所有键的数组Remove(key) 删除一个指定的键/条目对RemoveAll() 删除全部键/条目对2.对Dictionary中增加和删除条目一旦得到一个新的(空的)Dictionary,可以对其添加条目,从中获取条目以及删除条目:‘In VBScript:objMyData.Add “MyKey”, “MyItem”objMyData.Add “YourKey”, ”YourItem”blnIsThere = objMyData.Exists(“MyKey”)strItem = objMyData.Item(“YourKey”)strItem = objMyData.Remove(“MyKey”)objMyData.RemoveAll3.修改键或条目的值可以通过修改键的值,或通过修改与特定的键关联的条目的数据,来改变存储在Dictionary内的数据。

相关主题