当前位置: 首页 > 面试题库 >

使结构可哈希化?

顾嘉德
2023-03-14
问题内容

我正在尝试创建这种字典,[petInfo : UIImage]()但出现错误Type 'petInfo' does not conform to protocol 'Hashable'。我的petInfo结构是这样的:

struct petInfo {
    var petName: String
    var dbName: String
}

因此,我想以某种方式使其可散列,但是其组成部分都不是var hashValue: Int要求的整数。如果其所有字段都不是整数,如何使它符合协议?dbName如果我知道该结构在所有情况下都是唯一的,我可以使用吗?


问题答案:

只需dbName.hashValuehashValue函数返回即可。仅供参考-哈希值不需要唯一。要求两个相等的对象也必须具有相同的哈希值。

struct PetInfo: Hashable {
    var petName: String
    var dbName: String

    var hashValue: Int {
        return dbName.hashValue
    }

    static func == (lhs: PetInfo, rhs: PetInfo) -> Bool {
        return lhs.dbName == rhs.dbName && lhs.petName == rhs.petName
    }
}


 类似资料:
  • 我正在寻找解决方案如何计算数据结构的哈希。让我们假设我们有这样一个结构: 我还有函数

  • 问题内容: 在如何哈希列表?有人告诉我,我应该转换为一个元组第一,如到。 因此,第一个不能散列,而第二个可以散列。为什么*? *我并不是真正地在寻求详细的技术说明,而是在寻找一种直觉 问题答案: 主要是因为元组是不可变的。承担以下工作: 现在,当您这样做时会发生什么?您已修改字典中的键!远道而来!如果您熟悉哈希算法的工作原理,这会让您感到恐惧。另一方面,元组是绝对不变的。看起来好像是在修改元组,但

  • 问题内容: 我正在Java中寻找一个持久的哈希结构,这是一个简单的键值存储,其中key是唯一的字符串,value是一个int。每次将现有密钥添加到存储中时,密钥的值将增加。 我需要它很大-可能有5亿-10亿个密钥。我一直在评估tokyo-cabinet http://fallabs.com/tokyocabinet/javadoc/,但不确定其扩展性如何- 随着哈希值的增加,插入时间似乎越来越长。

  • 问题内容: 我想计算的不是字符串,而是整个数据结构的md5哈希。我了解执行此操作的方法的机制(调度值的类型,规范化字典键顺序和其他随机性,递归为子值等)。但这似乎是一种通常有用的操作,所以令我惊讶的是我需要自己动手操作。 Python中有一些更简单的方法来实现这一目标吗? 更新:建议使用酸洗,这是一个好主意,但是酸洗不能规范化字典的键顺序: 问题答案: bencode对字典进行排序,因此: 印刷品

  • 本文向大家介绍数据结构中的Robin-Hood哈希,包括了数据结构中的Robin-Hood哈希的使用技巧和注意事项,需要的朋友参考一下 在本节中,我们将了解什么是Robin-Hood哈希方案。这种散列是开放寻址的技术之一。这试图通过使用更公平的冲突解决策略来均衡元素的搜索时间。在尝试插入时,如果要在位置xi处插入元素x,并且已经在y j = x i处放置了元素y ,则两个元素中的较小者必须继续前进

  • 哈希表(Hash Table,也叫散列表),是根据关键码值 (Key-Value) 而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。哈希表的实现主要需要解决两个问题,哈希函数和冲突解决。 哈希函数 哈希函数也叫散列函数,它对不同的输出值得到一个固定长度的消息摘要。理想的哈希函数对于不同的输入应该产生不同的结构,同时散列结果应当具有同一性(输出值尽