以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [讨论]使用指南中的字典示例 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154510) |
-- 作者:Shily -- 发布时间:2020/9/16 18: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 \'是否存在键1 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 For Each v As String In zd.Values \'显示所有值 Output.Show(v) Next 香蕉 波罗 5:桃子 2:香蕉 3:波罗 4:桔子 1:苹果 桃子 香蕉 波罗 桔子 苹果 为什么打印会是5 2 3 1 4 这样的顺序呢,而不是2 3 4 1 5 |
-- 作者:有点蓝 -- 发布时间:2020/9/17 8:36:00 -- 字典是无序的 |
-- 作者:Shily -- 发布时间:2020/9/17 10:21:00 -- [此贴子已经被作者于2020/9/17 10:26:49编辑过]
|
-- 作者:Shily -- 发布时间:2020/9/17 10:43:00 -- 我是不是可以理解成 原本是 1 2 3 4 5 删除了 1 5 变成了 空 2 3 4 空 然后插入1 占用前一步删除5出来的位置 空 2 3 4 1 再插入5 因为有空位 就成 5 2 3 4 1 新插入的数据 在有空位置的时候会占用上一步删除掉的数据的位置(如果有删除数据的话) 所以像这个删除了两个 插入1 的时候并不会直接插入到第一个位置 形成 1 2 3 4 空 因为插入1的上一步删除的是5,所以占用的应该是5的原本位置 为 空 2 3 4 1这个意思
|
-- 作者:Shily -- 发布时间:2020/9/17 10:56:00 -- 我又删除添加了一个数据尝试了下,发现好像是对应来的 删除1 5 3 空 2 空 4 空 插入1 就对应3 空 2 1 4 空插入5 对应5 空 2 1 4 5 插入3 对应1 3 2 1 4 5 |
-- 作者:有点蓝 -- 发布时间:2020/9/17 11:05:00 -- 不一定的,数据少看不出来而已。如果需要使用顺序,改为使用SortedDictionary,用法完全一样,只是这个会按键自动排序 Dim zd As New SortedDictionary(Of Integer, String)
|
-- 作者:Shily -- 发布时间:2020/9/17 11:12:00 -- 好的了解了,谢谢老师 |