草庐IT

HashValue

全部标签

swift - swift协议(protocol)Hashable中hashValue的性能考虑

除了是一个唯一的整数之外,对于可以插入到SetHashable类型中的hashValue的选择还有任何性能考虑?例如,我选择的整数值的大小会影响后备数组的大小吗?即,如果我将4000的hashValue分配给Hashable类型并将其插入到Set中,则支持数组长度至少需要4000? 最佳答案 hashValue不必是唯一的。在绝大多数情况下,它不能是唯一的(任何大于64位的类型必然具有比其散列更多的可能状态)。您不选择整数的大小。它将始终是Int(这是机器字的大小)。但是,hashValue应该很快,理想情况下是O(1)。它通常用于

swift - Swift 中的 NSObject 子类 : hash vs hashValue, isEqual vs ==

在Swift中子类化NSObject时,您应该覆盖hash还是实现Hashable?此外,您应该覆盖isEqual:还是实现==运算符? 最佳答案 NSObject已经符合Hashable协议(protocol):extensionNSObject:Equatable,Hashable{///Thehashvalue.//////**Axiom:**`x==y`implies`x.hashValue==y.hashValue`//////-Note:thehashvalueisnotguaranteedtobestableacros