以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]魔力学狐表_字典问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42163) |
-- 作者:morlay2013 -- 发布时间:2013/11/5 17:12:00 -- [求助]魔力学狐表_字典问题 今天学到帮助文件的字典部分,运行代码后看到结果始终不太明白,请各位高手指导。代码如下: Dim zd As New Dictionary(Of Integer, String) zd.Add(1,"苹果") zd.Add(2,"香蕉") zd.Add(3,"波罗") zd.Add(4,"桔子") zd.Add(5,"桃子") zd.Remove(1) \'移除键1及其对应的值 zd.Remove(5) \'移除键5及其对应的值 Output.Show(zd(2)) \'显示键2对应的值 Output.Show(zd(3)) \'显示键3对应的值 If zd.ContainsKey(1) = False Then \'是否存在值"苹果" zd.Add(1,"苹果") End If If zd.ContainsValue("桃子") = False Then \'是否存在值"桃子" zd.Add(5,"桃子") End If For Each k As Integer In zd.Keys \'显示所有键及其对应的值 Output.Show(K & ":" & zd(k)) Next 以上代码运行结果如下: 5:桃子 2:香蕉 3:波罗 4:桔子 1:苹果 问题: 一、代码中首先添加的是苹果,再添加的是桃子,苹果加在了桔子的后面,而桃子怎么跑到最前面去了?即为什么不是这样的结果: 2:香蕉 3:波罗 4:桔子 1:苹果 5:桃子 二、我在学习前面数组及集合的时候我都试过了,若从数组或集合中删除一个值,后面的内容会依次顶上去(即把被删除的位置补上),而这个字典看样子好像不是这样的,请问它又是怎么样一个结构呢? 三、Output.Show(K & ":" & zd(k))这句代码在输出的时候以(键:值)这样的方式输出,但是按照定义zd(k)中的K代表的是键,即应该输入出它的键,而不是它的值吧?
|
-- 作者:狐狸爸爸 -- 发布时间:2013/11/5 17:17:00 -- 1、字典没有顺序,是根据键值离开查询的,无需考虑顺序的问题,内部的结构,就是资深的程序员估计也没有几个清楚,也没有兴趣研究。
2、根据你的代码,K是键,zd(K)是此键对应的值 |
-- 作者:有点甜 -- 发布时间:2013/11/5 19:47:00 -- 字典是无序的,不过字典也可以按照key来排序的,参考 Dim dic As New SortedDictionary(of Integer, String) dic.add(5, "广东") dic.add(6, "湛江") dic.add(1, "中国") For Each i As String In dic.Keys msgbox(i & " " & dic(i)) Next [此贴子已经被作者于2013-11-5 19:47:36编辑过]
|