加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 字典访问:复合键vs连接字符串索引

发布时间:2020-12-17 07:15:14 所属栏目:百科 来源:网络整理
导读:我有一个字典,我想用一个字符串(AcctNum)和一个日期(BalDate)的组合访问. 在我看来,最简单的方法是通过简单地将日期转换为字符串并连接来创建密钥: MyKey = BalDate.ToString "|" AcctNum 我知道我也可以选择通过编写一个单独的类来创建一个复合键,并重写Ge
我有一个字典,我想用一个字符串(AcctNum)和一个日期(BalDate)的组合访问.

在我看来,最简单的方法是通过简单地将日期转换为字符串并连接来创建密钥:

MyKey = BalDate.ToString & "|" & AcctNum

我知道我也可以选择通过编写一个单独的类来创建一个复合键,并重写GetHashCode()和Equals()a la this solution.

对我来说,连接字符串是一个更简单,如果不那么优雅的解决方案.我错过了一些令人信服的理由,为什么我应该采用复合密钥类方法?

这个查找是我正在进行的项目的关键,因此性能是我的主要目标(可读性紧随其后).

解决方法

您还可以通过继承Dictionary(Of TKey,TValue)来创建专门的集合

Public Class BalanceDict
    Inherits Dictionary(Of String,Balance)

    Public Shadows Sub Add(ByVal bal As Balance)
        MyBase.Add(bal.BalDate & "|" & bal.AcctNum,bal)
    End Sub

    Public Shadows Function TryGetValue(ByVal balDate As Date,ByVal acctNum As String,<OutAttribute()> ByRef bal As Balance) As Boolean
        Return MyBase.TryGetValue(balDate & "|" & acctNum,bal)
    End Function
End Class

我不认为复合键和连接字符串之间的速度差异很大.使用复合键,您不必将日期转换为字符串;但是,您必须计算不同的哈希码并将它们组合在一起.但是,通过使用字典的专门实现,您可以隐藏这些实现细节,并随时决定更改生成密钥的方式,而不会影响程序的其他部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读